<?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>213638</bug_id>
          
          <creation_ts>2020-06-25 21:18:05 -0700</creation_ts>
          <short_desc>[JSC] Add Intl.Segmenter</short_desc>
          <delta_ts>2020-08-22 12:23:24 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213425</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1666366</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-25 21:18:05 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673729</commentid>
    <comment_count>1</comment_count>
      <attachid>404895</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-21 19:51:01 -0700</bug_when>
    <thetext>Created attachment 404895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673730</commentid>
    <comment_count>2</comment_count>
      <attachid>404896</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-21 19:57:50 -0700</bug_when>
    <thetext>Created attachment 404896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673918</commentid>
    <comment_count>3</comment_count>
      <attachid>404896</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-07-22 12:00:51 -0700</bug_when>
    <thetext>Comment on attachment 404896
Patch

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

r=me. I&apos;m sad that we don&apos;t have test262 tests yet, but it&apos;s behind a flag, so we can keep tweaking things.

&gt; Source/JavaScriptCore/runtime/IntlSegmenter.cpp:180
&gt; +        result-&gt;putDirect(vm, vm.propertyNames-&gt;isWordLike, jsBoolean(!(ruleStatus &gt;= UBRK_WORD_NONE &amp;&amp; ruleStatus &lt;= UBRK_WORD_NONE_LIMIT)));

Seems like DeMorgan&apos;s rule wouldn&apos;t make this less clear?
  jsBoolean(ruleStatus &lt; UBRK_WORD_NONE || ruleStatus &gt; UBRK_WORD_NONE_LIMIT)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673945</commentid>
    <comment_count>4</comment_count>
      <attachid>404896</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-22 13:14:00 -0700</bug_when>
    <thetext>Comment on attachment 404896
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/IntlSegmenter.cpp:180
&gt;&gt; +        result-&gt;putDirect(vm, vm.propertyNames-&gt;isWordLike, jsBoolean(!(ruleStatus &gt;= UBRK_WORD_NONE &amp;&amp; ruleStatus &lt;= UBRK_WORD_NONE_LIMIT)));
&gt; 
&gt; Seems like DeMorgan&apos;s rule wouldn&apos;t make this less clear?
&gt;   jsBoolean(ruleStatus &lt; UBRK_WORD_NONE || ruleStatus &gt; UBRK_WORD_NONE_LIMIT)

I think that the current one is clear than &lt; || &gt; form since it is saying rulesStatus is not in this range.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675060</commentid>
    <comment_count>5</comment_count>
      <attachid>405242</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-25 22:44:34 -0700</bug_when>
    <thetext>Created attachment 405242
Rebaseline, test262</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675061</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-25 22:46:48 -0700</bug_when>
    <thetext>Update according to https://github.com/tc39/proposal-intl-segmenter/pull/128</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675062</commentid>
    <comment_count>7</comment_count>
      <attachid>405242</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-25 22:47:48 -0700</bug_when>
    <thetext>Comment on attachment 405242
Rebaseline, test262

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

&gt; JSTests/test262/expectations.yaml:1688
&gt; +test/intl402/Segmenter/prototype/segment/segment-grapheme.js:
&gt; +  default: &apos;Test262Error: Expected SameValue(Â«0Â», Â«undefinedÂ») to be true&apos;
&gt; +  strict mode: &apos;Test262Error: Expected SameValue(Â«0Â», Â«undefinedÂ») to be true&apos;
&gt; +test/intl402/Segmenter/prototype/segment/segment-sentence.js:
&gt; +  default: &apos;Test262Error: Expected SameValue(Â«0Â», Â«undefinedÂ») to be true&apos;
&gt; +  strict mode: &apos;Test262Error: Expected SameValue(Â«0Â», Â«undefinedÂ») to be true&apos;
&gt; +test/intl402/Segmenter/prototype/segment/segment-tostring.js:
&gt; +  default: &apos;Test262Error: Expected segment &quot;undefined&quot;, found &quot;undefined&quot; for arguments  Expected SameValue(Â«undefinedÂ», Â«undefinedÂ») to be true&apos;
&gt; +  strict mode: &apos;Test262Error: Expected segment &quot;undefined&quot;, found &quot;undefined&quot; for arguments  Expected SameValue(Â«undefinedÂ», Â«undefinedÂ») to be true&apos;
&gt; +test/intl402/Segmenter/prototype/segment/segment-word.js:
&gt; +  default: &apos;Test262Error: Expected SameValue(Â«0Â», Â«undefinedÂ») to be true&apos;
&gt; +  strict mode: &apos;Test262Error: Expected SameValue(Â«0Â», Â«undefinedÂ») to be true&apos;

test262 will be fixed in https://github.com/tc39/test262/pull/2714</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675063</commentid>
    <comment_count>8</comment_count>
      <attachid>405243</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-25 22:52:48 -0700</bug_when>
    <thetext>Created attachment 405243
Rebaseline + update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677087</commentid>
    <comment_count>9</comment_count>
      <attachid>405769</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-31 23:21:53 -0700</bug_when>
    <thetext>Created attachment 405769
Patch

Rebaseline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682155</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-22 12:22:30 -0700</bug_when>
    <thetext>Committed r266032: &lt;https://trac.webkit.org/changeset/266032&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682156</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-22 12:23:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/67621429&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404895</attachid>
            <date>2020-07-21 19:51:01 -0700</date>
            <delta_ts>2020-07-21 19:57:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213638-20200721195100.patch</filename>
            <type>text/plain</type>
            <size>125277</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YjA4YmQ4NGFiOThlMWNhNDk5ZDQ3YjAzYTc5ZjM4Mzc1MzgxYWQ5Li4yYmRiZDc1MjgwNTQyZmFm
NmZjYmU0MjJiMjA1ZTQ2MTJmOTdjZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMC0wNy0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBJbnRsLlNlZ21lbnRlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNjM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIEludGwu
U2VnbWVudGVyWzFdLiBJbnRsLlNlZ21lbnRlciBvZmZlcnMgYWNjZXNzIHRvIElDVSBicmVhayBp
dGVyYXRvciBmZWF0dXJlLCB3aGljaCBjYW4gYnJlYWsgc3RyaW5ncyBpbnRvIGdyYXBoZW1lIGNs
dXN0ZXIgLyB3b3JkcyAvIHNlbnRlbmNlcy4KKworICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHVi
LmNvbS90YzM5L3Byb3Bvc2FsLWludGwtc2VnbWVudGVyCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6Y3JlYXRlU2VnbWVudGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmludGxTZWdtZW50ZXJBdmFp
bGFibGVMb2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAg
KiBydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
SW50bFNlZ21lbnRJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJ
dGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVy
YXRvcjo6SW50bFNlZ21lbnRJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50SXRl
cmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRv
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50SXRlcmF0b3I6Om5l
eHQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6SW50bFNlZ21l
bnRJdGVyYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZUZ1bmNOZXh0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50SXRl
cmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkludGxTZWdtZW50ZXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkludGxTZWdtZW50ZXI6OkludGxTZWdtZW50ZXIpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVu
dGVyOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OmluaXRp
YWxpemVTZWdtZW50ZXIpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyOjpzZWdtZW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6Z3JhbnVsYXJpdHlTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpJbnRsU2VnbWVudGVyOjpjcmVhdGVTZWdtZW50RGF0YU9iamVjdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxT
ZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRl
ckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVu
dGVyQ29uc3RydWN0b3I6OkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RJbnRsU2VnbWVudGVyKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxTZWdtZW50
ZXIpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyQ29uc3RydWN0b3JTdXBwb3J0ZWRMb2Nh
bGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmg6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlKToK
KyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1NlZ21lbnQpOgorICAgICAg
ICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bFNlZ21lbnRzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxTZWdt
ZW50czo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRzOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudHM6OkludGxTZWdtZW50cyk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50czo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRs
U2VnbWVudHM6OmNvbnRhaW5pbmcpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudHM6OmNyZWF0
ZVNlZ21lbnRJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudHMuaDogQWRkZWQuCisgICAgICAg
ICogcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bFNlZ21lbnRzUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2Vn
bWVudHNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxTZWdt
ZW50c1Byb3RvdHlwZTo6SW50bFNlZ21lbnRzUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50
bFNlZ21lbnRzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxT
ZWdtZW50c1Byb3RvdHlwZUZ1bmNDb250YWluaW5nKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21l
bnRzUHJvdG90eXBlRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50
c1Byb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2VnbWVudEl0ZXJhdG9y
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNlZ21lbnRlclN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZWdtZW50c1N0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
Y3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwog
MjAyMC0wNy0yMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggRmluYWxpemF0aW9uUmVnaXN0cnkgR0MgZmluYWxpemVyIGludGVyYXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggNTM5MGI4ZDU3YzNmZDg0MjhmNDY3MzczZGUzNDg0YzQ1YTZhZGE5MC4uZjQwYzVjYmI0NzA2
NWU3YjU2NTY2OTkyOGY3NjY3NzlkY2Q0ODVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0w
Ny0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0Nd
IEFkZCBJbnRsLlNlZ21lbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEzNjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6U3RyaW5nOjpjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbiBjb25zdCk6CisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMjAtMDctMjEgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIEFWUm91dGVQaWNrZXJWaWV3IHdo
ZW4gYXZhaWxhYmxlIGZvciBjaG9vc2luZyBBaXJQbGF5IGRldmljZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiMDVjYjVjYjMyYmZlMDRjM2UzNzBmNWZkODJkNDU0ZTEz
NGNiZmJlLi42YTM5NjlkZjdmMzMwOGZhNGU5MjljODdhZjU1NDg3ZDFlYTdjZGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MCw2ICs4MCwxMCBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwCiAgICAgcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAor
ICAgIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1l
L0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxTZWdtZW50ZXJQ
cm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCiAgICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA1YTBjODgzZDUzNDhlNjU2N2FlZmY5NmFlYmMwODFmYmEwNzZjZTM3Li4zY2Mw
OTVhMmFjYmJmZDY1NTkzNTNlZDQ0MWE5ZmIyOTEzMzAxNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTQ3
LDYgKzE0NywxMCBAQCAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0
cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRv
clByb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0
cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBl
LmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCiAk
KFBST0pFQ1RfRElSKS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1Rf
RElSKS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9K
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDJiZGY1YjJj
ODIyYTZkOWU3YjZmNDU2YmIwYTk2MTYzZWUxZDZkMTAuLmNlYjkyOGZkOTc3NTZkMDBiZDk3Y2Nk
ZGUzZjU2MTE5YTA0MTZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTM3LDYgKzM3LDEwIEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsUGx1cmFs
UnVsZXNDb25zdHJ1Y3Rvci5sCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
dGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IubHV0
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9J
bnRsU2VnbWVudGVyUHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmx1dC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRp
bnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5sdXQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkNWQ2ZjJiYmQwMTMzMDdjODRhODEw
MzdjMDFiNTIxY2JkMmFhNGYwLi45YTllYWU5M2Y2OWM3ZmFhYWRmMmIyNWM3ZDI2YWE5OWE2ZDU4
OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTY4
LDYgKzE2OCwxMCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
bHV0LmggXAogICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggXAorICAg
IEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxTZWdtZW50ZXJD
b25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bFNlZ21lbnRlclByb3RvdHlwZS5sdXQuaCBcCisg
ICAgSW50bFNlZ21lbnRzUHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFWaWV3UHJvdG90eXBl
Lmx1dC5oIFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCiAgICAgSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUz
NGU3NzA1M2Y4MTBiOWYyNWEyNmZiYWEzZDE1N2JiNTQwNTk0MWEuLjljYTc5MzM1ZWE3ZDMzNDE3
MDUxYjZjMTdmMmNmZGZhMWY1ODMyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC02OTUsNyArNjk1LDYgQEAKIAkJMEZFQzg1OEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclN0YWNr
U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
Qzg1NjcxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclN0YWNrU2xvdC5oICovOyB9OwogCQkwRkVDODU4
RTFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2OTFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wLmgg
Ki87IH07CiAJCTBGRUM4NThGMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXBJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2QTFCREFD
REM3MDA4MEZGNzQgLyogQWlyVG1wSW5saW5lcy5oICovOyB9OwotCQkwRkVDODU4RjJCREFDREM3
MDA4MEZGNzQgLyogQWlyVG1wV2lkdGhJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU4RjJCREFDREM3MDA4MEZGNzQgLyogQWlyVG1w
V2lkdGhJbmxpbmVzLmggKi87IH07CiAJCTBGRUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJW
YWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQzg1NkMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRlLmggKi87IH07CiAJCTBGRUM4
NUEzMUJEQjVDRjEwMDgwRkY3NCAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2
REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJMEZFQzg1QTQxQkRCNUNGMTAw
ODBGRjc0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CkBAIC05MzIsMTkgKzkzMSwxOSBAQAogCQk1
MzBGREU3NTIxRkFCMDA2MDAwNTlENjUgLyogdGVzdEluY2x1ZGVzLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBGREU3MzIxRkFBRkM2MDAwNTlENjUg
LyogdGVzdEluY2x1ZGVzLm0gKi87IH07CiAJCTUzMTFCRDRCMUVBNTgxRTUwMDUyNTI4MSAvKiBX
YXNtT01HUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMUJENDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggKi87IH07CiAJCTUz
MTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdh
c21QbGFuLmggKi87IH07Ci0gICAgICAgICAgICAgICAgNTMxODA0NUMyMkVBQUM0QjAwNEE3MzQy
IC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAq
LzsgfTsKLSAgICAgICAgICAgICAgICA1MzFFRTdCQTIyREU2QkJCMDAzMERBODEgLyogRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzMUVFN0I5MjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZS5oICovOyB9OwotICAgICAgICAgICAgICAgIDUzMzNCQkRCMjExMEY3
RDIwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAv
KiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLzsgfTsKKwkJNTMxODA0NUMyMkVBQUM0QjAw
NEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFs
dWUuaCAqLzsgfTsKKwkJNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQ
cm90b3R5cGUuaCAqLzsgfTsKKwkJNTMzM0JCREIyMTEwRjdEMjAwNzYxOEVDIC8qIERGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwICovOyB9OwogCQk1MzMzQkJEQzIxMTBGN0Q5MDA3NjE4RUMgLyogREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZFQzlEQzIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCAqLzsgfTsK
IAkJNTMzM0JCREQyMTEwRjdFMTAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGNEMxNDM1
M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovOyB9OwotICAgICAgICAg
ICAgICAgIDUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMz
OEUyQTYyMzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTMzOEUyQTcy
Mzk2RUZGQjAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzM4RTJBNjIzOTZFRkVDMDBD
NjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MzM4RUJBMzIzQUIwNEI4MDAzODI2NjIg
LyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFQkEyMjNBQjA0QTMwMDM4MjY2MiAvKiBGVExTZWxlY3RQ
cmVkaWN0YWJpbGl0eS5oICovOyB9OwotICAgICAgICAgICAgICAgIDUzM0QwNzQ0MjJDMkQ3OTcw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNEMDc0MzIyQzJENzk3MDA0RDJG
RTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovOyB9OworCQk1MzNEMDc0
NDIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzRDA3NDMyMkMy
RDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCAqLzsgfTsK
IAkJNTMzRDA3NDcyMkMyRDlEMjAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzM0QwNzQ2MjJD
MkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi87IH07Ci0gICAgICAg
ICAgICAgICAgNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFG
QzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07CisJ
CTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3MTFEQUMz
NDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovOyB9OwogCQk1MzQ2Mzg3
MTFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDYzODcwMUU3MENGM0QwMEYxMkFDMSAvKiBK
U1J1bkxvb3BUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0gICAgICAgICAgICAgICAgNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVy
cmVkV29ya1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotICAgICAgICAgICAg
ICAgIDUzNDg2QkI3MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2
RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CisJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtU
aW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0
NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTM0ODZCQjcxQzE3OTVDMzAw
RjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0OTAy
ODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjgg
LyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3NkE3
IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk1MzRFMDM0RTFFNEQ0QjE2MDAyMTNG
NjQgLyogQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTM0RTAzNEQxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCAqLzsgfTsK
QEAgLTE3ODUsNiArMTc4NCwxOCBAQAogCQlERTI2RTkwMzFDQjVERDA1MDBEMkJFODIgLyogQnVp
bHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFi
bGVDcmVhdG9yLmggKi87IH07CiAJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAw
MzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMwNzE3ODMyNEM3ODI3MTAwREYwNjQ0IC8qIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEEzQkY4ODUwMjQ0ODBCRTEwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmggKi87IH07CisJCUUzMDcxNzg0MjRDNzgyNzcwMERGMDY0NCAvKiBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTMwNzE3ODUyNEM3ODI3OTAwREYwNjQ0IC8qIElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQkY4ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi87IH07CisJCUUzMDcxNzg2MjRDNzgyN0MwMERG
MDY0NCAvKiBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMDcxNzdEMjRDNzgyNDYwMERGMDY0NCAvKiBJbnRs
U2VnbWVudGVyQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTMwNzE3ODcyNEM3ODI3RTAwREYwNjQ0
IC8qIEludGxTZWdtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMDcxNzgxMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyLmggKi87
IH07CisJCUUzMDcxNzg4MjRDNzgyODEwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzA3MTc3
RjI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlclByb3RvdHlwZS5oICovOyB9OworCQlF
MzA3MTc4OTI0Qzc4Mjg2MDBERjA2NDQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RDVGQjE4RDIwNzQ0
QUU4MDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggKi87IH07CisJCUUzMDcx
NzhBMjRDNzgyOEMwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOTAyMDc0NEJG
MTAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi87IH07CisJCUUzMDcx
NzhCMjRDNzgyOEYwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMTkyMjA3NDRCRjIwMDVEREY2NCAv
KiBJbnRsUGx1cmFsUnVsZXMuaCAqLzsgfTsKKwkJRTMwNzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8q
IEludGxMb2NhbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzQUZGOTMwMjQ1QTNDRkMwMEM5QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90
eXBlLmggKi87IH07CisJCUUzMDcxNzhEMjRDNzgyOUEwMERGMDY0NCAvKiBJbnRsTG9jYWxlQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAqLzsg
fTsKKwkJRTMwNzE3OEUyNEM3ODI5RDAwREYwNjQ0IC8qIEludGxMb2NhbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5
QkEzQiAvKiBJbnRsTG9jYWxlLmggKi87IH07CiAJCUUzMTE3OUFBMjI4ODM4NjEwMDUxNEIyQyAv
KiBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8qIFN5bWJvbFRhYmxl
T3JTY29wZURlcHRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVDNUZF
MDgwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMxNjE4MTUxRUM1RkUyNzAwMDZBMjE4IC8qIERPTUF0
dHJpYnV0ZUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMxNjE4MTIxRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRl
clNldHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xODcyLDYgKzE4ODMsMTAgQEAKIAkJRTNEMzUxNUYyNDFCODlENzAwOERDMTZFIC8qIE1h
cmtlZEpTVmFsdWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZB
cnJheS5oICovOyB9OwogCQlFM0Q4Nzc3NDFFNjVDMEEwMDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1w
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDg3
NzcyMUU2NUMwODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oICovOyB9OwogCQlFM0VFMTM3
NjIxRkJENDM1MDBEODNDNEIgLyogRXJyb3JUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VFMTM3NDIxRkJENDM0MDBEODNDNEIgLyogRXJyb3JU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RTNGMjE5MzcyNEM3ODgyRjAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjIxOTMxMjRDNzg4Mjkw
MDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yLmggKi87IH07CisJCUUzRjIxOTM4MjRDNzg4
MzEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyMTkyRjI0Qzc4ODI5MDAzQUU0
NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oICovOyB9OworCQlFM0YyMTkzOTI0
Qzc4ODM0MDAzQUU0NTMgLyogSW50bFNlZ21lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyMTkzMzI0Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNl
Z21lbnRzLmggKi87IH07CisJCUUzRjIxOTNBMjRDNzg4MzYwMDNBRTQ1MyAvKiBJbnRsU2VnbWVu
dHNQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRjIxOTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuaCAq
LzsgfTsKIAkJRTNGMjNBN0YxRUNGMTNFRTAwOTc4RDk5IC8qIFNuaXBwZXRTbG93UGF0aENhbGxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyM0E3
RTFFQ0YxM0U1MDA5NzhEOTkgLyogU25pcHBldFNsb3dQYXRoQ2FsbHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MDFFQ0YxM0Y1MDA5
NzhEOTkgLyogU25pcHBldFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNGMjNBN0QxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRSZWcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MTFF
Q0YxM0ZBMDA5NzhEOTkgLyogU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjNBN0MxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBw
ZXRQYXJhbXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMzIwNCw5ICszMjE5LDkgQEAKIAkJMEZFQzg1NjgxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
clRtcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJUbXAuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclRtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRUM4NTY5MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQWlyVG1wLmg7IHBhdGggPSBiMy9haXIvQWlyVG1wLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NTZBMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXBJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclRtcElubGluZXMu
aDsgcGF0aCA9IGIzL2Fpci9BaXJUbXBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTBGRUM4NThGMkJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXBXaWR0aElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyVG1wV2lkdGhJbmxpbmVzLmg7IHBh
dGggPSBiMy9haXIvQWlyVG1wV2lkdGhJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGRUM4NTZCMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJWYWxpZGF0ZS5jcHA7IHBhdGggPSBi
My9haXIvQWlyVmFsaWRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVD
ODU2QzFCREFDREM3MDA4MEZGNzQgLyogQWlyVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQWlyVmFsaWRhdGUuaDsgcGF0aCA9IGIzL2Fpci9BaXJWYWxpZGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODU4RjJCREFDREM3MDA4MEZGNzQg
LyogQWlyVG1wV2lkdGhJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEFpclRtcFdpZHRoSW5saW5lcy5oOyBwYXRoID0gYjMvYWlyL0FpclRtcFdpZHRoSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODU5MjFCREIxRTEwMDA4MEZGNzQg
LyogQWlyR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEFpckdlbmVyYXRlZC5jcHA7IHBhdGggPSBiMy9haXIvQWlyR2VuZXJhdGVkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1QUQxQkRCNUNGMTAwODBGRjc0IC8qIHRlc3Ri
MyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdGIz
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkwRkVDODVBRTFCREI1RDVF
MDA4MEZGNzQgLyogdGVzdGIzXzEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gdGVzdGIzXzEuY3BwOyBwYXRoID0gYjMvdGVzdGIzXzEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzY0Niw5ICszNjYxLDkgQEAKIAkJNTM0MUZDNzExREFDMzQzQzAw
RTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2Mzg3MDFF
NzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTM0NjM4NzIxRTcwRDAxNTAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAgICAgICAgICAgICAgICA1MzQ2Mzg3NDFFNzBEREVDMDBG
MTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGVmZXJyZWRXb3JrVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmVycmVkV29ya1RpbWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdv
cmtUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJl
ZFdvcmtUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgICAgICAg
ICAgNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0ODZCQkExQzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlwZWRB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1R5cGVkQXJy
YXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ5MDI4MjFDNzI0MkM4MDAx
MkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFR5cGVkQXJyYXlDVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvVHlwZWRBcnJh
eUNUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODMxQzcyNDJD
ODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5NDksNiArNDk2NCwxMiBAQAog
CQlFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5j
cHA7IH07CiAJCUUzMDYwMTI4MjI4Rjk3ODEwMEZBQUJERiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFi
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1v
ZHVsZUxvYWRlci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE1v
ZHVsZUxvYWRlci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3N0QyNEM3
ODI0NjAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTMwNzE3N0UyNEM3ODI0NjAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFNlZ21lbnRlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMDcxNzdGMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2Vn
bWVudGVyUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdtZW50ZXJQcm90b3R5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3ODAyNEM3ODI0NzAwREYwNjQ0
IC8qIEludGxTZWdtZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFNlZ21lbnRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMDcxNzgxMjRDNzgyNDcwMERGMDY0
NCAvKiBJbnRsU2VnbWVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdtZW50ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3ODIyNEM3ODI0NzAwREYwNjQ0IC8qIElu
dGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVu
dGVyQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzExNzlB
OTIyODgzODVEMDA1MTRCMkMgLyogU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTMxNjE4MTAxRUM1RkUwODAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQW5ub3RhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzE2MTgxMTFFQzVGRTA4MDAwNkEyMTggLyogRE9NQXR0cmlidXRl
R2V0dGVyU2V0dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERP
TUF0dHJpYnV0ZUdldHRlclNldHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MDk1LDYgKzUxMTYsMTQgQEAKIAkJRTNEODc3NzIxRTY1QzA4OTAwQkU5NDVBIC8qIEJ5dGVj
b2RlRHVtcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlRHVt
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUUxMzc0MjFGQkQ0MzQwMEQ4
M0M0QiAvKiBFcnJvclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXJy
b3JUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUUxMzc1MjFGQkQ0MzQw
MEQ4M0M0QiAvKiBFcnJvclR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXJyb3JUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjE5
MkYyNEM3ODgyOTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFM0YyMTkzMDI0Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJ
dGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVudEl0ZXJhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjE5MzEyNEM3ODgyOTAwM0FFNDUzIC8q
IEludGxTZWdtZW50SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bFNlZ21lbnRJdGVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0YyMTkzMjI0Qzc4ODJBMDAzQUU0
NTMgLyogSW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxT
ZWdtZW50c1Byb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIx
OTMzMjRDNzg4MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bFNlZ21lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIxOTM0MjRDNzg4
MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFNl
Z21lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjE5MzUyNEM3ODgy
QTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzRjIxOTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bFNlZ21lbnRzUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRjIzQTdCMUVDRjEzRTUwMDk3OEQ5OSAvKiBTbmlw
cGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNuaXBwZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGMjNBN0MxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBw
ZXRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU25pcHBldFBhcmFt
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyM0E3RDFFQ0YxM0U1MDA5NzhE
OTkgLyogU25pcHBldFJlZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbmlw
cGV0UmVnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjEzLDE3ICs3MjQyLDE1
IEBACiAJCQkJMTQ3MzQxRTkxREMyQ0YyNTAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmNwcCAq
LywKIAkJCQkxNDczNDFDQjFEQzAyRDcyMDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuaCAqLywK
IAkJCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmgg
Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQ0ZBRDMzMjM3MkRBQTcwMDI5
MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8sCisJCQkJQ0VDRkFEMzMyMzcyREFB
NzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmNwcCAqLywKIAkJCQlDRUNGQUQzMjIz
NzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRTIwQkQw
NDIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcCAqLywKIAkJ
CQlDRTIwQkQwMzIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmgg
Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ1MjJDMkQ4N0YwMDRE
MkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk1MzNE
MDc0NTIyQzJEODdGMDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5j
cHAgKi8sCiAJCQkJNTMzRDA3NDMyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuaCAqLywKIAkJCQk1MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyogRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwICovLAogCQkJCTUzMUVFN0I5MjJERTZCQkIw
MDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oICovLAogCQkJCUE3QThB
RjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCAqLywKLQkJCQlBN0E4QUYyOTE3
QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCi0JCQkJQTdBOEFGMkExN0FEQjVG
MzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUE3QThBRjJBMTdBREI1RjMwMDVB
QjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlCQzI2ODBDMDBFMTZENEU5MDBBMDZFOTIg
LyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMyNjgwQzEwRTE2RDRFOTAwQTA2
RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKQEAgLTczMjgsNiArNzM1NSwyMCBAQAog
CQkJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuaCAqLywKIAkJCQlBM0JGODg0QjI0NDgwQkRFMDAxQjlGMzUgLyogSW50bFJlbGF0
aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5
RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLywKKwkJCQlFMzA3MTc4
MDI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlci5jcHAgKi8sCisJCQkJRTMwNzE3ODEy
NEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIuaCAqLywKKwkJCQlFMzA3MTc4MjI0Qzc4
MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlFMzA3
MTc3RDI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmggKi8sCisJ
CQkJRTMwNzE3N0UyNEM3ODI0NjAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5cGUuY3Bw
ICovLAorCQkJCUUzMDcxNzdGMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyUHJvdG90
eXBlLmggKi8sCisJCQkJRTNGMjE5MzAyNEM3ODgyOTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRl
cmF0b3IuY3BwICovLAorCQkJCUUzRjIxOTMxMjRDNzg4MjkwMDNBRTQ1MyAvKiBJbnRsU2VnbWVu
dEl0ZXJhdG9yLmggKi8sCisJCQkJRTNGMjE5MzUyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdt
ZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCUUzRjIxOTJGMjRDNzg4MjkwMDNBRTQ1
MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmggKi8sCisJCQkJRTNGMjE5MzQyNEM3
ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5jcHAgKi8sCisJCQkJRTNGMjE5MzMyNEM3ODgy
QTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oICovLAorCQkJCUUzRjIxOTMyMjRDNzg4MkEwMDNB
RTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwICovLAorCQkJCUUzRjIxOTM2MjRDNzg4
MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuaCAqLywKIAkJCQkwRjI3NUYyQzFF
Q0UwNzk2MDA2MjBENDcgLyogSW50cmluc2ljLmNwcCAqLywKIAkJCQk4NkJGNjQyQTE0OERCMkI1
MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8sCiAJCQkJOEI5RjZENTUxRDU5MTJGQTAwMUM3MzlG
IC8qIEl0ZXJhdGlvbktpbmQuaCAqLywKQEAgLTczODYsMTMgKzc0MjcsOSBAQAogCQkJCTBGN0RG
MTM5MUUyOTcxMEUwMDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5j
cHAgKi8sCiAJCQkJMEY3REYxM0ExRTI5NzEwRTAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmggKi8sCiAJCQkJQTdCNEFDQUUxNDg0QzlDRTAwQjM4QTM2IC8qIEpT
RXhwb3J0TWFjcm9zLmggKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzMDA3
NDBDMjJERDZGNjYwMEI5QUNCMyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCAqLywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMzRDA3NDYyMkMyRDlEMTAwNEQyRkUyIC8q
IEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNzk4OTM3NzYxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgKi8sCi0J
CQkJNzk4OTM3NzYxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgKi8sCi0JCQkJ
Nzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovLAotCQkJCTc5ODkz
Nzc3MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuaCAqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMEYyQjY2QzExN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFy
cmF5LmggKi8sCisJCQkJNTMwMDc0MEMyMkRENkY2NjAwQjlBQ0IzIC8qIEpTRmluYWxpemF0aW9u
UmVnaXN0cnkuY3BwICovLAorCQkJCTUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5LmggKi8sCisJCQkJMEYyQjY2QzExN0I2QjVBQjAwQTdBRTNGIC8qIEpT
RmxvYXQzMkFycmF5LmggKi8sCiAJCQkJMEYyQjY2QzIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxv
YXQ2NEFycmF5LmggKi8sCiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rp
b24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmgg
Ki8sCkBAIC03NTkxLDcgKzc2MjgsNyBAQAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAv
KiBQcml2YXRlTmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAvKiBQcm9n
cmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJBIC8qIFBy
b2dyYW1FeGVjdXRhYmxlLmggKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE3
RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAorCQkJ
CUE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAog
CQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywK
IAkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAq
LywKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCkBA
IC05NTcyLDExICs5NjA5LDExIEBACiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4
cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjdDRjgyMjQ5MzE2QjEw
MDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMz
QzU3MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQ0ZBRDM3
MjM3MkRBRDQwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0VDRkFEMzcyMzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTIwQkQwNTIzN0QzRTIzMDA0NkU1MjAgLyogRmlsZUJhc2Vk
RnV6emVyQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNTMzRDA3NDQyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzM0QwNzQ0MjJDMkQ3OTcwMDREMkZF
MiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MzFFRTdCQTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBN0E4
QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjI0RTU0MzE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5o
IGluIEhlYWRlcnMgKi8sCkBAIC05ODAzLDYgKzk4NDAsOSBAQAogCQkJCUUzNjVGMzNBMjRBQTYy
MzkwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzUzQzEyMTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIyIC8q
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3
MTc4RTI0Qzc4MjlEMDBERjA2NDQgLyogSW50bExvY2FsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTMwNzE3OEQyNEM3ODI5QTAwREYwNjQ0IC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTMwNzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxMb2NhbGVQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTJGRjFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODEwLDYgKzk4NTAsMTkgQEAKIAkJCQlBMTI1ODQ2
RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MDhFQkUyNDFDRThGMzU4MDA0NTMxNDYgLyogSW50bE9iamVj
dElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzhCMjRDNzgyOEYwMERGMDY0NCAv
KiBJbnRsUGx1cmFsUnVsZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzhBMjRDNzgyOEMw
MERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTMwNzE3ODkyNEM3ODI4NjAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3ODMyNEM3ODI3MTAwREYwNjQ0IC8qIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzg0MjRDNzgyNzcwMERG
MDY0NCAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzMDcxNzg1MjRDNzgyNzkwMERGMDY0NCAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4NzI0Qzc4MjdFMDBERjA2NDQg
LyogSW50bFNlZ21lbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3ODYyNEM3ODI3QzAw
REYwNjQ0IC8qIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTMwNzE3ODgyNEM3ODI4MTAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzRjIxOTM3MjRDNzg4MkYwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0YyMTkzODI0Qzc4ODMxMDAzQUU0NTMgLyog
SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNGMjE5
MzkyNEM3ODgzNDAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTNGMjE5M0EyNEM3ODgzNjAwM0FFNDUzIC8qIEludGxTZWdtZW50c1Byb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTM0RTAzNTQxRTUzQkQyOTAwMjEzRjY0IC8qIEludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENFMTMyMUZCMTFEQTQwMDZG
MzkwMSAvKiBJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk5
MTAsOCArOTk2Myw4IEBACiAJCQkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFy
Vk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4
cG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpT
RXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTMzRDA3NDcyMkMyRDlEMjAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnku
aCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwRjJCNjZF
RjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUzM0QwNzQ3MjJDMkQ5RDIwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJy
YXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYwMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zs
b2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUYwRTE2RjVDRDAwQjM0NDYw
IC8qIEpTRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAyOEJBMTc5NzYwM0QwMDk4
MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIwMSw3ICsx
MDI1NCw3IEBACiAJCQkJREM2MDVCNjAxQ0UyNkVBNzAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTExMDFEQ0E5Mjk0MDAxNEY5RkUgLyogUHJvZ3JhbUNv
ZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3MzQxRDQxREMwMkU2RDAwQUEyOUJBIC8q
IFByb2dyYW1FeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkQzRTQwRTFCNjE4QjY2MDBDODBFMUUgLyogUHJvcGVy
dHlDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RkI2MTAwMTA0MEMzOEIwMDE3QTI4
NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTU0MzdEMEVC
QTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODYxNThBQjMxNTVDOEI0MDAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYTg5NDYzZmNhODM5NjM4NGVmMGE4
ZmQ4MTU1Y2ExZWM1YjAyMTVkNS4uOWMwMTcxZDEwZWE3NGFjMGRkYjZhOWMzZDlkMGQ1NDc5Y2Ix
YWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODMyLDYgKzgzMiwxMyBAQCBy
dW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdC5jcHAKIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcAogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorcnVudGlt
ZS9JbnRsU2VnbWVudEl0ZXJhdG9yLmNwcAorcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJv
dG90eXBlLmNwcAorcnVudGltZS9JbnRsU2VnbWVudGVyLmNwcAorcnVudGltZS9JbnRsU2VnbWVu
dGVyQ29uc3RydWN0b3IuY3BwCitydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCity
dW50aW1lL0ludGxTZWdtZW50cy5jcHAKK3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmNw
cAogcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCiBydW50aW1lL0l0ZXJhdG9yUHJvdG90
eXBlLmNwcAogcnVudGltZS9KU0FycmF5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNTBlNjBmMTQxMzU1NGIwNTFkZGZl
NDgxNzUwNjY5NTU0YWRlZTExMi4uMGM0OGY2ZmMzMTViNTZiYmNmMmU2YThmMjgxOWVlMzhlM2E2
YWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCkBAIC01NCw2ICs1NCw3IEBACiAgICAgbWFjcm8oUmVnRXhwKSBcCiAgICAgbWFj
cm8oUmVsYXRpdmVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oUmVtb3RlUGxheWJhY2spIFwKKyAg
ICBtYWNybyhTZWdtZW50ZXIpIFwKICAgICBtYWNybyhTZXQpIFwKICAgICBtYWNybyhTaGFyZWRB
cnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKFN0cmluZykgXApAQCAtMTE5LDYgKzEyMCw3IEBACiAg
ICAgbWFjcm8oZ2V0KSBcCiAgICAgbWFjcm8oZ2xvYmFsKSBcCiAgICAgbWFjcm8oZ28pIFwKKyAg
ICBtYWNybyhncmFudWxhcml0eSkgXAogICAgIG1hY3JvKGdyb3VwcykgXAogICAgIG1hY3JvKGhh
cykgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5KSBcCkBAIC0xMzksNiArMTQxLDcgQEAKICAg
ICBtYWNybyhpc1Byb3RvdHlwZU9mKSBcCiAgICAgbWFjcm8oaXNWaWV3KSBcCiAgICAgbWFjcm8o
aXNXYXRjaHBvaW50KSBcCisgICAgbWFjcm8oaXNXb3JkTGlrZSkgXAogICAgIG1hY3JvKGpldHRp
c29uUmVhc29uKSBcCiAgICAgbWFjcm8oam9pbikgXAogICAgIG1hY3JvKGxhbmd1YWdlKSBcCkBA
IC0xNzYsNiArMTc5LDcgQEAKICAgICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8oc2NyaXB0
KSBcCiAgICAgbWFjcm8oc2Vjb25kKSBcCisgICAgbWFjcm8oc2VnbWVudCkgXAogICAgIG1hY3Jv
KHNlbnNpdGl2aXR5KSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCBiMmQ1Y2I4
NGM4MzJjNjJlNmM0NWYwZmNkNGY3ZmQ4ODQ4MDZhYmRjLi45MTlmYjYyZjFlODQ5YjJjNzM3OWZl
NDZlZDQ2MTk0NWU4Yjg4MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcApAQCAtNDgsOCArNDgsMTIgQEAKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5o
PgogI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWZpZWxkcG9z
aXRlci5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgpAQCAtMTE2LDYgKzEyMCwxMyBAQCBz
dGF0aWMgSlNWYWx1ZSBjcmVhdGVSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0s
IEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJv
dG90eXBlKCkpLCBqc0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSo+KGdsb2Jh
bE9iamVjdC0+cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9i
amVjdCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZVNlZ21lbnRlckNvbnN0cnVjdG9y
KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0
ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBJbnRs
U2VnbWVudGVyQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blByb3RvdHlwZSgpKSwganNDYXN0PEludGxTZWdtZW50ZXJQcm90b3R5cGUqPihnbG9iYWxPYmpl
Y3QtPnNlZ21lbnRlclN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworfQor
CiB9CiAKICNpbmNsdWRlICJJbnRsT2JqZWN0Lmx1dC5oIgpAQCAtMTY5LDYgKzE4MCw4IEBAIHZv
aWQgSW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik7CiAj
ZW5kaWYKKyAgICBpZiAoT3B0aW9uczo6dXNlSW50bFNlZ21lbnRlcigpKQorICAgICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+U2VnbWVudGVyLCBj
cmVhdGVTZWdtZW50ZXJDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogU3RydWN0dXJlKiBJbnRsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTI4MSw2ICsyOTQsMjcgQEAgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCkKICAgICByZXR1cm4gYXZhaWxh
YmxlTG9jYWxlczsKIH0KIAorY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsU2VnbWVudGVyQXZh
aWxhYmxlTG9jYWxlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3Ry
aW5nPj4gY2FjaGVkQXZhaWxhYmxlTG9jYWxlczsKKyAgICBIYXNoU2V0PFN0cmluZz4mIGF2YWls
YWJsZUxvY2FsZXMgPSBjYWNoZWRBdmFpbGFibGVMb2NhbGVzLmdldCgpOworCisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRp
YWxpemVPbmNlLCBbJl0geworICAgICAgICBBU1NFUlQoYXZhaWxhYmxlTG9jYWxlcy5pc0VtcHR5
KCkpOworICAgICAgICBjb25zdGV4cHIgYm9vbCBpc0ltbW9ydGFsID0gdHJ1ZTsKKyAgICAgICAg
aW50MzJfdCBjb3VudCA9IHVicmtfY291bnRBdmFpbGFibGUoKTsKKyAgICAgICAgZm9yIChpbnQz
Ml90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIGxvY2FsZSA9
IGxhbmd1YWdlVGFnRm9yTG9jYWxlSUQodWJya19nZXRBdmFpbGFibGUoaSksIGlzSW1tb3J0YWwp
OworICAgICAgICAgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZChsb2NhbGUpOworICAgICAg
ICAgICAgYWRkU2NyaXB0bGVzc0xvY2FsZUlmTmVlZGVkKGF2YWlsYWJsZUxvY2FsZXMsIGxvY2Fs
ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxlczsKK30K
KwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1nZXRvcHRpb24KIFRyaVN0YXRlIGlu
dGxCb29sZWFuT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0
aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IDBiMGE3YmI2YmE0MWMxZWYyOTFhMjgyMjNiODUwMzgx
ODdmNzY4ZDYuLjVlZDRkMTVlNjA0NmYwMWNlYjJiNTcyOWFiZjAyZjg2MDUxZTcxZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTgxLDYgKzgxLDcg
QEAgY2xhc3MgSW50bE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIFN0
cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0Kik7CiBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCk7CiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxD
b2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFNl
Z21lbnRlckF2YWlsYWJsZUxvY2FsZXMoKTsKIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxh
YmxlTG9jYWxlcygpOyB9CiBpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGlzcGxh
eU5hbWVzQXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7
IH0KIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFi
bGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZTVjNmYwZDc5YmMyZWJkYjQ5MWI3MWM5M2QxYmI4OGZlMzdjZGRmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJ
dGVyYXRvci5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisKKyNpbmNsdWRlICJJdGVy
YXRvck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VjdXJyLmg+CisjaW5jbHVkZSA8
dW5pY29kZS91bG9jLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudEl0ZXJhdG9y
OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEludGxTZWdtZW50SXRlcmF0b3IpIH07CisKK0ludGxTZWdtZW50
SXRlcmF0b3IqIEludGxTZWdtZW50SXRlcmF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9y
RGVsZXRlcj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiBidWZmZXIsIEpTU3RyaW5n
KiBzdHJpbmcsIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQoreworICAg
IGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50SXRl
cmF0b3I+KHZtLmhlYXApKSBJbnRsU2VnbWVudEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoc2VnbWVudGVyKSwgV1RGTW92ZShidWZmZXIpLCBncmFudWxhcml0eSk7CisgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5nKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitT
dHJ1Y3R1cmUqIEludGxTZWdtZW50SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bFNlZ21l
bnRJdGVyYXRvcjo6SW50bFNlZ21lbnRJdGVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRl
cj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSW50bFNlZ21lbnRl
cjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisg
ICAgLCBtX3NlZ21lbnRlcihXVEZNb3ZlKHNlZ21lbnRlcikpCisgICAgLCBtX2J1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpCisgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQoreworfQorCit2
b2lkIEludGxTZWdtZW50SXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNTdHJpbmcq
IHN0cmluZykKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBtX3N0cmluZy5zZXQodm0sIHRoaXMsIHN0cmluZyk7
Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SW50bFNlZ21lbnRJdGVyYXRvcio+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9z
dHJpbmcpOworfQorCitKU09iamVjdCogSW50bFNlZ21lbnRJdGVyYXRvcjo6bmV4dChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpbnQz
Ml90IHN0YXJ0SW5kZXggPSB1YnJrX2N1cnJlbnQobV9zZWdtZW50ZXIuZ2V0KCkpOworICAgIGlu
dDMyX3QgZW5kSW5kZXggPSB1YnJrX25leHQobV9zZWdtZW50ZXIuZ2V0KCkpOworICAgIGlmIChl
bmRJbmRleCA9PSBVQlJLX0RPTkUpCisgICAgICAgIHJldHVybiBjcmVhdGVJdGVyYXRvclJlc3Vs
dE9iamVjdChnbG9iYWxPYmplY3QsIGpzVW5kZWZpbmVkKCksIHRydWUpOworICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBJbnRsU2VnbWVudGVyOjpjcmVhdGVTZWdtZW50RGF0YU9iamVjdChnbG9iYWxP
YmplY3QsIG1fc3RyaW5nLmdldCgpLCBzdGFydEluZGV4LCBlbmRJbmRleCwgKm1fc2VnbWVudGVy
LCBtX2dyYW51bGFyaXR5KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgIHJldHVybiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdChnbG9iYWxPYmplY3QsIG9iamVj
dCwgZmFsc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGI5
NjAzYjI2ODgyZDI3ZGFiZTYyMDNhYzA3NzczNWMzNTc0MzYxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5oCkBAIC0w
LDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGxT
ZWdtZW50ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxTZWdtZW50SXRlcmF0
b3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCog
Y2VsbCkKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PEludGxTZWdtZW50SXRlcmF0b3IqPihj
ZWxsKS0+SW50bFNlZ21lbnRJdGVyYXRvcjo6fkludGxTZWdtZW50SXRlcmF0b3IoKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4K
KyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB2bS5pbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2U8bW9kZT4oKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgSW50bFNlZ21lbnRJdGVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
c3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+JiYs
IEJveDxWZWN0b3I8VUNoYXI+PiwgSlNTdHJpbmcqLCBJbnRsU2VnbWVudGVyOjpHcmFudWxhcml0
eSk7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTT2JqZWN0KiBu
ZXh0KEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3ByaXZhdGU6CisgICAgSW50bFNlZ21lbnRJdGVyYXRv
cihWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFr
SXRlcmF0b3JEZWxldGVyPiYmLCBCb3g8VmVjdG9yPFVDaGFyPj4mJiwgSW50bFNlZ21lbnRlcjo6
R3JhbnVsYXJpdHkpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1N0cmluZyopOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0
ZXI+IG1fc2VnbWVudGVyOworICAgIEJveDxWZWN0b3I8VUNoYXI+PiBtX2J1ZmZlcjsKKyAgICBX
cml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fc3RyaW5nOworICAgIEludGxTZWdtZW50ZXI6OkdyYW51
bGFyaXR5IG1fZ3JhbnVsYXJpdHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwMDljOTJmNTM1OTljYzdkODFkMGFjZDdk
NTMwNmE3ZmQ2MWNjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsODcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGVGdW5j
TmV4dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRs
U2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNl
Z21lbnQgU3RyaW5nIEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJnNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxTZWdtZW50SXRl
cmF0b3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZS5sdXQuaAorQGJlZ2luIHNlZ21lbnRJdGVyYXRvclByb3RvdHlwZVRhYmxlCisgIG5l
eHQgICAgICAgICAgICAgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0ICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZSogSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkp
IEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJl
KiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxTZWdt
ZW50SXRlcmF0b3JQcm90b3R5cGU6OkludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30K
Kwordm9pZCBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9O
KCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLXNlZ21lbnRlci8jc2Vj
LSVzZWdtZW50aXRlcmF0b3Jwcm90b3R5cGUlLm5leHQKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBzZWdtZW50SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdt
ZW50SXRlcmF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFzZWdt
ZW50SXRlcmF0b3IpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLlNlZ21lbnRJdGVyYXRvci5wcm90b3R5cGUubmV4dCBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50SXRlcmF0
b3IiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
c2VnbWVudEl0ZXJhdG9yLT5uZXh0KGdsb2JhbE9iamVjdCkpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudEl0ZXJhdG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUzY2IyMjVlMmE4ZTAw
ZjFlNTE3MjAyYTUzYzgxMTJhY2U5ZjBjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFNlZ21lbnRJdGVyYXRvclByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworcHJpdmF0ZToKKyAgICBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKFZNJiwgU3RydWN0
dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjViMWE5YjgwMTNjNWVhN2JmYzIxMmQ2OWU4ZGUzNzA1ZWRkNzg2ZjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudGVyLmNwcApAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgiCisKKyNpbmNsdWRlICJJbnRsT2JqZWN0
SW5saW5lcy5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50cy5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIEludGxTZWdtZW50ZXI6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFNl
Z21lbnRlcikgfTsKKworSW50bFNlZ21lbnRlciogSW50bFNlZ21lbnRlcjo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRlcj4odm0uaGVhcCkpIEludGxTZWdtZW50ZXIo
dm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0
dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsU2VnbWVudGVyOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK0ludGxTZWdtZW50ZXI6OkludGxTZWdtZW50ZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsU2VnbWVu
dGVyOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLXNlZ21lbnRlci8jc2VjLWludGwuc2VnbWVudGVyCit2b2lk
IEludGxTZWdtZW50ZXI6OmluaXRpYWxpemVTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgYXV0byByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXpl
TG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGxvY2FsZXMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU09iamVjdCogb3B0aW9uczsKKyAgICBpZiAob3B0
aW9uc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkp
OworICAgIGVsc2UgeworICAgICAgICBvcHRpb25zID0gb3B0aW9uc1ZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgfQorCisgICAgUmVzb2x2ZUxvY2FsZU9wdGlvbnMgbG9jYWxlT3B0aW9uczsKKworICAg
IExvY2FsZU1hdGNoZXIgbG9jYWxlTWF0Y2hlciA9IGludGxPcHRpb248TG9jYWxlTWF0Y2hlcj4o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7
IHsgImxvb2t1cCJfcywgTG9jYWxlTWF0Y2hlcjo6TG9va3VwIH0sIHsgImJlc3QgZml0Il9zLCBM
b2NhbGVNYXRjaGVyOjpCZXN0Rml0IH0gfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIg
XCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiX3MsIExvY2FsZU1hdGNoZXI6OkJlc3RGaXQpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBhdXRvIGxvY2Fs
ZURhdGEgPSBbXShjb25zdCBTdHJpbmcmLCBSZWxldmFudEV4dGVuc2lvbktleSkgLT4gVmVjdG9y
PFN0cmluZz4geworICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBhdXRvJiBhdmFp
bGFibGVMb2NhbGVzID0gaW50bFNlZ21lbnRlckF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBhdXRv
IHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMs
IHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU1hdGNoZXIsIGxvY2FsZU9wdGlvbnMsIHsgfSwgbG9j
YWxlRGF0YSk7CisKKyAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmxvY2FsZTsKKyAgICBpZiAobV9s
b2NhbGUuaXNFbXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50ZXIgZHVlIHRvIGludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZ3JhbnVsYXJpdHkgPSBp
bnRsT3B0aW9uPEdyYW51bGFyaXR5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPmdyYW51bGFyaXR5LCB7IHsgImdyYXBoZW1lIl9zLCBHcmFudWxhcml0eTo6R3JhcGhl
bWUgfSwgeyAid29yZCJfcywgR3JhbnVsYXJpdHk6OldvcmQgfSwgeyAic2VudGVuY2UiX3MsIEdy
YW51bGFyaXR5OjpTZW50ZW5jZSB9IH0sICJncmFudWxhcml0eSBtdXN0IGJlIGVpdGhlciBcImdy
YXBoZW1lXCIsIFwid29yZFwiLCBvciBcInNlbnRlbmNlXCIiX3MsIEdyYW51bGFyaXR5OjpHcmFw
aGVtZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIFVC
cmVha0l0ZXJhdG9yVHlwZSB0eXBlID0gVUJSS19DSEFSQUNURVI7CisgICAgc3dpdGNoIChtX2dy
YW51bGFyaXR5KSB7CisgICAgY2FzZSBHcmFudWxhcml0eTo6R3JhcGhlbWU6CisgICAgICAgIHR5
cGUgPSBVQlJLX0NIQVJBQ1RFUjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFudWxhcml0
eTo6V29yZDoKKyAgICAgICAgdHlwZSA9IFVCUktfV09SRDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBHcmFudWxhcml0eTo6U2VudGVuY2U6CisgICAgICAgIHR5cGUgPSBVQlJLX1NFTlRFTkNF
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICBtX3NlZ21lbnRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRv
ciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPih1YnJrX29wZW4odHlwZSwgbV9sb2NhbGUudXRmOCgp
LmRhdGEoKSwgbnVsbHB0ciwgMCwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgU2VnbWVudGVyIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30K
KworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtaW50bC5z
ZWdtZW50ZXIucHJvdG90eXBlLnNlZ21lbnQKK0pTVmFsdWUgSW50bFNlZ21lbnRlcjo6c2VnbWVu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHN0cmluZ1ZhbHVlKSBjb25z
dAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1N0cmluZyoganNTdHJpbmcgPSBzdHJp
bmdWYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgU3RyaW5nIHN0cmluZyA9IGpzU3RyaW5nLT52YWx1ZShnbG9iYWxP
YmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgYXV0byB1
cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBCb3g8VmVjdG9yPFVDaGFyPj46OmNyZWF0ZShzdHJpbmcu
Y2hhcmFjdGVyc1dpdGhvdXROdWxsVGVybWluYXRpb24oKSk7CisKKyAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIHNlZ21lbnRlciA9IHN0ZDo6dW5pcXVlX3B0
cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPih1YnJrX3NhZmVDbG9uZSht
X3NlZ21lbnRlci5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgJnN0YXR1cykpOworICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudHMiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKyAgICB1YnJrX3NldFRleHQoc2VnbWVudGVyLmdldCgpLCB1cGNvbnZl
cnRlZENoYXJhY3RlcnMtPmRhdGEoKSwgdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLT5zaXplKCksICZz
dGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudHMi
X3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBJbnRsU2VnbWVu
dHM6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5zZWdtZW50c1N0cnVjdHVyZSgpLCBXVEZNb3Zl
KHNlZ21lbnRlciksIFdURk1vdmUodXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKSwganNTdHJpbmcsIG1f
Z3JhbnVsYXJpdHkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1zZWdt
ZW50ZXIvI3NlYy1pbnRsLnNlZ21lbnRlci5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCitKU09i
amVjdCogSW50bFNlZ21lbnRlcjo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IEpTT2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNT
dHJpbmcodm0sIG1fbG9jYWxlKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5ncmFudWxhcml0eSwganNOb250cml2aWFsU3RyaW5nKHZtLCBncmFudWxhcml0
eVN0cmluZyhtX2dyYW51bGFyaXR5KSkpOworICAgIHJldHVybiBvcHRpb25zOworfQorCitBU0NJ
SUxpdGVyYWwgSW50bFNlZ21lbnRlcjo6Z3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHkpCit7CisgICAgc3dpdGNoIChncmFudWxhcml0eSkgeworICAgIGNhc2UgR3JhbnVs
YXJpdHk6OkdyYXBoZW1lOgorICAgICAgICByZXR1cm4gImdyYXBoZW1lIl9zOworICAgIGNhc2Ug
R3JhbnVsYXJpdHk6OldvcmQ6CisgICAgICAgIHJldHVybiAid29yZCJfczsKKyAgICBjYXNlIEdy
YW51bGFyaXR5OjpTZW50ZW5jZToKKyAgICAgICAgcmV0dXJuICJzZW50ZW5jZSJfczsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVs
bCgpOworfQorCitKU09iamVjdCogSW50bFNlZ21lbnRlcjo6Y3JlYXRlU2VnbWVudERhdGFPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZywgaW50MzJf
dCBzdGFydEluZGV4LCBpbnQzMl90IGVuZEluZGV4LCBVQnJlYWtJdGVyYXRvciYgc2VnbWVudGVy
LCBHcmFudWxhcml0eSBncmFudWxhcml0eSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnNl
Z21lbnQsIGpzU3Vic3RyaW5nKGdsb2JhbE9iamVjdCwgc3RyaW5nLCBzdGFydEluZGV4LCBlbmRJ
bmRleCAtIHN0YXJ0SW5kZXgpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+aW5kZXgsIGpzTnVtYmVyKHN0YXJ0SW5kZXgpKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aW5wdXQsIHN0cmluZyk7CisgICAgaWYgKGdyYW51
bGFyaXR5ID09IEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5OjpXb3JkKSB7CisgICAgICAgIGlu
dDMyX3QgcnVsZVN0YXR1cyA9IHVicmtfZ2V0UnVsZVN0YXR1cygmc2VnbWVudGVyKTsKKyAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzV29yZExpa2UsIGpz
Qm9vbGVhbighKHJ1bGVTdGF0dXMgPj0gVUJSS19XT1JEX05PTkUgJiYgcnVsZVN0YXR1cyA8PSBV
QlJLX1dPUkRfTk9ORV9MSU1JVCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzV29yZExpa2UsIGpzVW5kZWZpbmVkKCkpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMGY0MjZj
NDg5NzU2YWFkNDk3MWU2OWM2ODExOWEzZjcwZTBmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmgKQEAgLTAsMCArMSw3OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgor
I2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VI
ZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit1c2luZyBVQnJlYWtJdGVyYXRvckRlbGV0
ZXIgPSBJQ1VEZWxldGVyPHVicmtfY2xvc2U+OworCitjbGFzcyBJbnRsU2VnbWVudGVyIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U05vbkZpbmFsT2JqZWN0OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisg
ICAgeworICAgICAgICBzdGF0aWNfY2FzdDxJbnRsU2VnbWVudGVyKj4oY2VsbCktPkludGxTZWdt
ZW50ZXI6On5JbnRsU2VnbWVudGVyKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bFNlZ21lbnRl
clNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgZW51bSBjbGFzcyBHcmFudWxhcml0eSA6IHVp
bnQ4X3QgeyBHcmFwaGVtZSwgV29yZCwgU2VudGVuY2UgfTsKKworICAgIHN0YXRpYyBJbnRsU2Vn
bWVudGVyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgdm9pZCBpbml0aWFsaXplU2VnbWVudGVyKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBsb2NhbGVzVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKTsKKworICAgIEpT
VmFsdWUgc2VnbWVudChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpIGNvbnN0OworICAgIEpTT2Jq
ZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAgIHN0YXRp
YyBKU09iamVjdCogY3JlYXRlU2VnbWVudERhdGFPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU1N0
cmluZyosIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJyZWFrSXRlcmF0
b3ImLCBHcmFudWxhcml0eSk7CisKK3ByaXZhdGU6CisgICAgSW50bFNlZ21lbnRlcihWTSYsIFN0
cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWwgZ3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkpOworCisgICAgc3RkOjp1
bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVu
dGVyOworICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5
IHsgR3JhbnVsYXJpdHk6OkdyYXBoZW1lIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVy
Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNGQ5YmU5MTFlMGZlNDEyNzdhNjliNzcwOWFj
NTNiOWViZmZjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25z
dHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxT
ZWdtZW50ZXJQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25zdHJ1
Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2Vn
bWVudGVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
JnNlZ21lbnRlckNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50
ZXJDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHNlZ21lbnRlckNvbnN0cnVjdG9yVGFibGUKKyAg
c3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvclN1
cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisq
LworCitJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IqIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxTZWdtZW50ZXJQcm90b3R5
cGUqIHNlZ21lbnRlclByb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24odm0sIHNlZ21lbnRlclByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxTZWdtZW50ZXIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpJ
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEludGxTZWdtZW50ZXIsIGNvbnN0cnVjdEludGxT
ZWdtZW50ZXIpCit7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNlZ21lbnRlclByb3RvdHlw
ZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIlNlZ21lbnRlciJfcywgTmFtZUFk
ZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNlZ21lbnRl
clByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOworICAgIHNlZ21lbnRlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKKy8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5TZWdtZW50ZXIKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1Rh
cmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5ld1RhcmdldCA9PSBjYWxsRnJh
bWUtPmpzQ2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmplY3QtPnNlZ21lbnRlclN0cnVjdHVy
ZSgpCisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5ld1RhcmdldCkt
PnNlZ21lbnRlclN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgSW50bFNlZ21lbnRlciogc2VnbWVudGVyID0gSW50bFNlZ21lbnRlcjo6Y3Jl
YXRlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChzZWdtZW50ZXIpOworCisgICAgc2NvcGUu
cmVsZWFzZSgpOworICAgIHNlZ21lbnRlci0+aW5pdGlhbGl6ZVNlZ21lbnRlcihnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyKTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL2VjbWE0MDIvI3NlYy1JbnRsLlNlZ21lbnRlcgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTZWdtZW50ZXIiKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxl
c09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWlu
dGwtc2VnbWVudGVyLyNzZWMtaW50bC5zZWdtZW50ZXIuc3VwcG9ydGVkbG9jYWxlc29mCisKKyAg
ICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlU2VnbWVudGVyJS5bW2F2YWlsYWJsZUxv
Y2FsZXNdXS4KKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBp
bnRsU2VnbWVudGVyQXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgLy8gMi4gTGV0IHJlcXVlc3Rl
ZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICBWZWN0b3I8
U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExv
Y2FsZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxl
cyhnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkpKSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1
Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhkYmIxZjNhMWY3YjVkNmFlMmVlMDcxMjdiNTVkYTc5MDNlMzBl
YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
U2VnbWVudGVyQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFNlZ21lbnRlclByb3Rv
dHlwZTsKKworY2xhc3MgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0
aW9uOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMg
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsU2Vn
bWVudGVyUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKwor
cHJpdmF0ZToKKyAgICBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bFNlZ21lbnRlclByb3RvdHlwZSopOwor
fTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxTZWdtZW50ZXJDb25z
dHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90
eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YmJjMzQyYjgwMjliYmFjYTUzMWM2OWY0ZDY4OWU0OTM4ZWVj
YmEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFNlZ21lbnRlclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5oIgor
CisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxTZWdtZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRlclBy
b3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
KworfQorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJJbnRsLlNlZ21lbnRlciIsICZCYXNlOjpzX2luZm8sICZzZWdtZW50ZXJQcm90b3R5
cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsU2VnbWVudGVyUHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50ZXJQcm90b3R5cGUubHV0LmgKK0Bi
ZWdpbiBzZWdtZW50ZXJQcm90b3R5cGVUYWJsZQorICBzZWdtZW50ICAgICAgICAgIEludGxTZWdt
ZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgcmVzb2x2ZWRPcHRpb25zICBJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyAgICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsU2VnbWVudGVyUHJv
dG90eXBlKiBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbnRsU2VnbWVudGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFNlZ21lbnRlclByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50ZXJQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworSW50bFNlZ21lbnRlclByb3RvdHlwZTo6SW50bFNlZ21lbnRlclBy
b3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQoreworfQorCit2b2lkIEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVu
dGVyLyNzZWMtaW50bC5zZWdtZW50ZXIucHJvdG90eXBlLnNlZ21lbnQKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRlclByb3RvdHlwZUZ1bmNTZWdtZW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBhdXRvKiBzZWdtZW50ZXIgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdt
ZW50ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFzZWdtZW50ZXIp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJ
bnRsLlNlZ21lbnRlci5wcm90b3R5cGUuc2VnbWVudCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50ZXIiX3MpOworCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5zZWdtZW50KGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtSW50bC5TZWdtZW50ZXIucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsU2Vn
bWVudGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogc2VnbWVudGVyID0ganNEeW5hbWljQ2FzdDxJbnRsU2VnbWVudGVyKj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghc2VnbWVudGVyKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5TZWdtZW50ZXIu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50ZXIiX3MpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5yZXNvbHZlZE9wdGlvbnMo
Z2xvYmFsT2JqZWN0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MmZkNTljZWY2YzZmMmIxNzQ3Y2I4NGE3MTljNzNjMzBiMjMxZDA2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclBy
b3RvdHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsU2Vn
bWVudGVyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGlj
OgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0
YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRs
U2VnbWVudGVyUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOwor
Citwcml2YXRlOgorICAgIEludGxTZWdtZW50ZXJQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg3MzcxZGU4MzI0OTc0MzIzZTA4NzczZDFmMDNmMmJjMTJmOGFlNmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3Bw
CkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxTZWdtZW50cy5oIgorCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIK
KyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8dW5pY29kZS91Y3Vy
ci5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2lj
dS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50
bFNlZ21lbnRzOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxTZWdtZW50cykgfTsKKworSW50bFNlZ21l
bnRzKiBJbnRsU2VnbWVudHM6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBz
dGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4mJiBz
ZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSlNTdHJpbmcqIHN0cmluZywg
SW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgYXV0byogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRzPih2bS5oZWFwKSkg
SW50bFNlZ21lbnRzKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoc2VnbWVudGVyKSwgV1RGTW92ZShi
dWZmZXIpLCBncmFudWxhcml0eSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3Ry
aW5nKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50czo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitJbnRsU2VnbWVudHM6OkludGxTZWdtZW50cyhWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0
ZXJhdG9yRGVsZXRlcj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwg
SW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCisgICAgLCBtX3NlZ21lbnRlcihXVEZNb3ZlKHNlZ21lbnRlcikpCisgICAgLCBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5
KQoreworfQorCit2b2lkIEludGxTZWdtZW50czo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1N0
cmluZyogc3RyaW5nKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NF
UlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIG1fc3RyaW5nLnNldCh2bSwgdGhpcywgc3Ry
aW5nKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNz
ZWMtaW50bC5zZWdtZW50ZXIucHJvdG90eXBlLmNvbnRhaW5pbmcKK0pTVmFsdWUgSW50bFNlZ21l
bnRzOjpjb250YWluaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW5k
ZXhWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgZG91YmxlIHZhbHVlID0gaW5k
ZXhWYWx1ZS50b0ludGVnZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSBtX2J1ZmZlci0+
c2l6ZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbnQzMl90IGluZGV4
ID0gdG9JbnQzMih2YWx1ZSk7CisKKyAgICAvLyBUaGUgcmVzdWx0IG9mIHVicmtfcHJlY2VkaW5n
IGlzIGFsd2F5cyAqc21hbGxlciogdGhhbiBvZmZzZXQsIG9yIFVCUktfRE9ORS4gSW4gdGhpcyBj
YXNlLCB3ZSBzaG91bGQgc2V0IHNjYW4gcG9zaXRpb24gd2l0aCBgaW5kZXggKyAxYC4KKyAgICAv
LyBFdmVuIGlmIGluZGV4ICsgMSBleGNlZWRzIGxlbmd0aCBvZiBzdHJpbmcgYnkgMSwgdGhpcyBp
cyBkZXNpcmFibGUgaWYgd2Ugd2FudCB0byBzY2FuIHRoZSBsYXN0IHNlZ21lbnQuCisgICAgaW50
MzJfdCBzdGFydEluZGV4ID0gdWJya19wcmVjZWRpbmcobV9zZWdtZW50ZXIuZ2V0KCksIGluZGV4
ICsgMSk7CisgICAgaWYgKHN0YXJ0SW5kZXggPT0gVUJSS19ET05FKQorICAgICAgICBzdGFydElu
ZGV4ID0gMDsKKyAgICAvLyBUaGUgcmVzdWx0IG9mIHVicmtfZm9sbG93aW5nIGlzIGFsd2F5cyBn
cmVhdGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuIFNjYW4gcG9zaXRpb24gc2hvdWxkIGJl
IGBpbmRleGAuCisgICAgaW50MzJfdCBlbmRJbmRleCA9IHVicmtfZm9sbG93aW5nKG1fc2VnbWVu
dGVyLmdldCgpLCBpbmRleCk7CisgICAgaWYgKGVuZEluZGV4ID09IFVCUktfRE9ORSkKKyAgICAg
ICAgZW5kSW5kZXggPSBtX2J1ZmZlci0+c2l6ZSgpOworCisgICAgc2NvcGUucmVsZWFzZSgpOwor
ICAgIHJldHVybiBJbnRsU2VnbWVudGVyOjpjcmVhdGVTZWdtZW50RGF0YU9iamVjdChnbG9iYWxP
YmplY3QsIG1fc3RyaW5nLmdldCgpLCBzdGFydEluZGV4LCBlbmRJbmRleCwgKm1fc2VnbWVudGVy
LCBtX2dyYW51bGFyaXR5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwt
c2VnbWVudGVyLyNzZWMtJXNlZ21lbnRzcHJvdG90eXBlJS1AQGl0ZXJhdG9yCitKU09iamVjdCog
SW50bFNlZ21lbnRzOjpjcmVhdGVTZWdtZW50SXRlcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBzZWdtZW50ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUJy
ZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4odWJya19zYWZlQ2xvbmUobV9zZWdt
ZW50ZXIuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRJdGVyYXRvciJfcyk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHVicmtfZmlyc3Qoc2VnbWVudGVyLmdldCgpKTsK
KyAgICByZXR1cm4gSW50bFNlZ21lbnRJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PnNlZ21lbnRJdGVyYXRvclN0cnVjdHVyZSgpLCBXVEZNb3ZlKHNlZ21lbnRlciksIG1fYnVmZmVy
LCBtX3N0cmluZy5nZXQoKSwgbV9ncmFudWxhcml0eSk7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRz
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsU2VnbWVudHMqPihjZWxsKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fc3RyaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQw
NjNjNzNiYTQyNTY4MTU5ZTBhYTU5YjE2NjM4ZTU4NjczMzg1ODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuaApAQCAtMCwwICsx
LDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRsU2VnbWVu
dGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsU2VnbWVudHMgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9u
RmluYWxPYmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IHRydWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7
CisgICAgICAgIHN0YXRpY19jYXN0PEludGxTZWdtZW50cyo+KGNlbGwpLT5JbnRsU2VnbWVudHM6
On5JbnRsU2VnbWVudHMoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsU2VnbWVudHNTcGFjZTxt
b2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudHMqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JE
ZWxldGVyPiYmLCBCb3g8VmVjdG9yPFVDaGFyPj4mJiwgSlNTdHJpbmcqLCBJbnRsU2VnbWVudGVy
OjpHcmFudWxhcml0eSk7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IEpTVmFsdWUgY29udGFpbmluZyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgaW5kZXhWYWx1ZSk7
CisgICAgSlNPYmplY3QqIGNyZWF0ZVNlZ21lbnRJdGVyYXRvcihKU0dsb2JhbE9iamVjdCopOwor
CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
Citwcml2YXRlOgorICAgIEludGxTZWdtZW50cyhWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVl
X3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPiYmLCBCb3g8VmVjdG9y
PFVDaGFyPj4mJiwgSW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkpOworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBKU1N0cmluZyopOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0
ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVudGVyOworICAgIEJveDxWZWN0
b3I8VUNoYXI+PiBtX2J1ZmZlcjsKKyAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fc3RyaW5n
OworICAgIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzOTY1MGM0ODBjMTNj
ZTIyYWRkNzg4Y2EwOTU3YTU1NWQ0ZGJjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEs
MTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxT
ZWdtZW50c1Byb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVyYXRvcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsU2VnbWVudHNQcm90b3R5cGUubHV0
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFNlZ21lbnRzUHJv
dG90eXBlOjpzX2luZm8gPSB7ICIlU2VnbWVudHMlIiwgJkJhc2U6OnNfaW5mbywgJnNlZ21lbnRz
UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFNlZ21lbnRz
UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50c1Byb3RvdHlwZS5sdXQu
aAorQGJlZ2luIHNlZ21lbnRzUHJvdG90eXBlVGFibGUKKyAgY29udGFpbmluZyAgICAgICBJbnRs
U2VnbWVudHNQcm90b3R5cGVGdW5jQ29udGFpbmluZyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKK0BlbmQKKyovCisKK0ludGxTZWdtZW50c1Byb3RvdHlwZSogSW50bFNlZ21lbnRzUHJvdG90
eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsU2VnbWVudHNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudHNQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdt
ZW50c1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsU2VnbWVudHNQcm90b3R5cGU6Oklu
dGxTZWdtZW50c1Byb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxTZWdtZW50c1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBJbnRsU2VnbWVudHNQcm90b3R5cGVGdW5jSXRl
cmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAwKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNz
ZWMtJXNlZ21lbnRzcHJvdG90eXBlJS5jb250YWluaW5nCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNDb250YWluaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBzZWdtZW50cyA9IGpzRHluYW1pY0Nhc3Q8SW50bFNlZ21lbnRzKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghc2VnbWVudHMpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIlU2VnbWVudHMu
cHJvdG90eXBlJS5jb250YWluaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIFNlZ21lbnRzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jb250YWluaW5nKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtJXNlZ21lbnRzcHJvdG90eXBlJS1AQGl0ZXJhdG9y
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJ
dGVyYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogc2VnbWVudHMgPSBqc0R5bmFt
aWNDYXN0PEludGxTZWdtZW50cyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBp
ZiAoIXNlZ21lbnRzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiJVNlZ21lbnRzLnByb3RvdHlwZSVbQEBpdGVyYXRvcl0gY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgU2VnbWVudHMiX3MpOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudHMt
PmNyZWF0ZVNlZ21lbnRJdGVyYXRvcihnbG9iYWxPYmplY3QpKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNl
Z21lbnRzUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudHNQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjQ0NGRhMTM5ZGI1OTliZTlkZDllNTBlYWEx
OTkyNDVlNWE0NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEludGxTZWdtZW50c1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVu
dHNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRsU2Vn
bWVudHNQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDNj
YjYyMTM3YzA5YzI0ZDZkYTZiYjJhYWEzYWNjMWYyN2I3ZjI1MjAuLjkzN2IxZDg3MjQxMzIxOWFi
YjEwNGU4ZTljOGFjOTJhYjhkMWU0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg2LDYgKzg2LDEyIEBACiAjaW5jbHVkZSAi
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZv
cm1hdC5oIgogI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJ
bnRsU2VnbWVudGVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5j
bHVkZSAiSW50bFNlZ21lbnRzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyLmgiCkBAIC0xMDE3LDYgKzEwMjMsMjQgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
ICAgICAgICAgICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZSA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0
ZShpbml0LnZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
KSk7CiAgICAgICAgICAgICBpbml0LnNldChJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGVT
dHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5
cGUpKTsKICAgICAgICAgfSk7CisgICAgbV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUuaW5pdExh
dGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewor
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZSogc2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlID0gSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0
b3JQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgaW5pdC5zZXQoSW50bFNlZ21lbnRJdGVyYXRv
cjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgc2VnbWVudEl0ZXJhdG9y
UHJvdG90eXBlKSk7CisgICAgICAgIH0pOworICAgIG1fc2VnbWVudGVyU3RydWN0dXJlLmluaXRM
YXRlcigKKyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIEludGxTZWdtZW50ZXJQcm90b3R5
cGUqIHNlZ21lbnRlclByb3RvdHlwZSA9IEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZShp
bml0LnZtLCBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAg
ICAgICBpbml0LnNldChJbnRsU2VnbWVudGVyOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBzZWdtZW50ZXJQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9zZWdt
ZW50c1N0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxT
dHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJ
bnRsU2VnbWVudHNQcm90b3R5cGUqIHNlZ21lbnRzUHJvdG90eXBlID0gSW50bFNlZ21lbnRzUHJv
dG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsU2VnbWVudHNQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxTZWdtZW50czo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgc2VnbWVudHNQcm90b3R5cGUp
KTsKKyAgICAgICAgfSk7CiAgICAgbV9kZWZhdWx0Q29sbGF0b3IuaW5pdExhdGVyKAogICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SW50bENvbGxhdG9yPiYgaW5pdCkgewogICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpOwpAQCAtMTg0OSw2ICsxODczLDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRo
aXNPYmplY3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhp
c09iamVjdC0+bV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAg
dGhpc09iamVjdC0+bV9zZWdtZW50ZXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhp
c09iamVjdC0+bV9zZWdtZW50c1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKIAogICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9uKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzZWRkYWUzMjdjMmVi
ZGY2OWIxMzIzZjg4NjA0NGEwYjY2MDQzYTg0Li45OTllNjhiNDYwOGQ2ZWU1ZjY3YmI0ZWQ4YTA4
ZmU5NTFhZDM2MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKQEAgLTMwMiw2ICszMDIsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcmVsYXRpdmVU
aW1lRm9ybWF0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlPiBtX3NlZ21lbnRJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9zZWdtZW50ZXJTdHJ1Y3R1cmU7CisgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fc2VnbWVudHNTdHJ1Y3R1cmU7CiAK
ICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5jdGlv
bjsKICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJGdW5j
dGlvbjsKQEAgLTgwNSw2ICs4MDgsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVy
ZSgpIHsgcmV0dXJuIG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVy
ZSogcGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJl
LmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJl
KCkgeyByZXR1cm4gbV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Cisg
ICAgU3RydWN0dXJlKiBzZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3NlZ21l
bnRJdGVyYXRvclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHNlZ21lbnRl
clN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fc2VnbWVudGVyU3RydWN0dXJlLmdldCh0aGlzKTsgfQor
ICAgIFN0cnVjdHVyZSogc2VnbWVudHNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3NlZ21lbnRzU3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1v
dGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVt
b3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggOTI1NWJkZDVhOWRmM2U3MjNkYzdmYzc0YjkyNzFiNGM4
OTIxMjEwZS4uNDRmOTNkZTJkNWI0YWRiYzUxYmYzMGNmZDIwNWFjZTg4YmVjODQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00OTAsNiArNDkw
LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxz
ZTsKICAgICB2KEJvb2wsIHVzZVdlYWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBX
ZWFrUmVmIGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYo
Qm9vbCwgdXNlSW50bERpc3BsYXlOYW1lcywgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50
bC5EaXNwbGF5TmFtZXMgY29uc3RydWN0b3IuIikgXAorICAgIHYoQm9vbCwgdXNlSW50bFNlZ21l
bnRlciwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5TZWdtZW50ZXIgY29uc3RydWN0
b3IuIikgXAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBO
b3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24g
cHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBj
bGFpbSB0byBiZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4g
b2JqZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBmb3Jj
ZU1pbmlWTU1vZGUsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1pbmkg
Vk0gbW9kZSBvbi4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTc4
YjQzNDI1MDgyMmE0Mzk3NWVkYTNlNzgwZWZmNGIwYjQ3NmFiYS4uMDg1YjRmYzBjYjRkYTljYzc1
YWEwYmVhMGFmYTYxNDMxYTU4ODVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtNzEsNiArNzEsOSBAQAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNs
dWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkludGxTZWdt
ZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKICNpbmNsdWRlICJJc29IZWFwQ2Vs
bFR5cGUuaCIKICNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAi
SklUQ29kZS5oIgpAQCAtMzE0LDYgKzMxNyw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSwgYm9vbCogc3VjY2VzcykKICAgICAsIGludGxOdW1iZXJGb3JtYXRIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bE51bWJlckZvcm1hdD4oKSkKICAg
ICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsUGx1cmFsUnVsZXM+KCkpCiAgICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KCkpCisg
ICAgLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEludGxTZWdtZW50SXRlcmF0b3I+KCkpCisgICAgLCBpbnRsU2VnbWVudGVySGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50ZXI+KCkpCisgICAgLCBpbnRs
U2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRz
PigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2Nr
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2s+KCkpCiAgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPFdlYkFzc2VtYmx5RnVuY3Rpb24+KCkpCkBAIC0xNTE5LDYgKzE1MjUsOSBA
QCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNl
LCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlLgogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSW50bE51bWJlckZvcm1hdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENl
bGxUeXBlLmdldCgpLCBJbnRsUGx1cmFsUnVsZXMpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVU
aW1lRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JT
cGFjZSwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRJ
dGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2Vn
bWVudGVyU3BhY2UsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50
ZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRz
U3BhY2UsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRzKQogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVG9X
YXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vi
QXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVjZApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggN2QyZjI0MzgxZDM4ODlkZGI5YjgzMjg3OGQ0OGVj
ZTNiMzQ3MDIwMy4uYzdiMTExMWU0NTM1Mjg0MGY0NWEwZDczOTJlYTc2MWZkZTg1ZWIyYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMzEsNiArMTMxLDkgQEAgY2xhc3MgSW50
bExvY2FsZTsKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQ7CiBjbGFzcyBJbnRsUGx1cmFsUnVsZXM7
CiBjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OworY2xhc3MgSW50bFNlZ21lbnRJdGVyYXRv
cjsKK2NsYXNzIEludGxTZWdtZW50ZXI7CitjbGFzcyBJbnRsU2VnbWVudHM7CiBjbGFzcyBKU0FQ
SUdsb2JhbE9iamVjdDsKIGNsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsKIGNsYXNzIEpT
QVBJV3JhcHBlck9iamVjdDsKQEAgLTQwOCw2ICs0MTEsOSBAQCBjbGFzcyBWTSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4g
ewogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxOdW1iZXJGb3JtYXRI
ZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFBs
dXJhbFJ1bGVzSGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudGVySGVhcENlbGxU
eXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50c0hl
YXBDZWxsVHlwZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBD
ZWxsVHlwZTsKQEAgLTU2Nyw2ICs1NzMsOSBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1bGVzU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsUmVsYXRpdmVU
aW1lRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihpbnRsU2VnbWVudGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbnRsU2VnbWVudHNTcGFjZSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IGE3N2ZkOGM2NDBh
NDk2NDgyOTc3YjliZWMyODc2ZGEzNTVlMjJhYWUuLjQyNWQ0ZDU4YzViYjU3NzI2NmRhNzNlYWM1
Y2I1Njk0OTVhYWUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTQyNiw3ICs0
MjYsNyBAQCBib29sIFN0cmluZzo6cGVyY2VudGFnZShpbnQmIHJlc3VsdCkgY29uc3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotVmVjdG9yPFVDaGFyPiBTdHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkgY29uc3QKK1ZlY3RvcjxVQ2hhcj4gU3RyaW5nOjpjaGFyYWN0ZXJzV2l0
aG91dE51bGxUZXJtaW5hdGlvbigpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7
CiAKQEAgLTQ0MSwxMyArNDQxLDE4IEBAIFZlY3RvcjxVQ2hhcj4gU3RyaW5nOjpjaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVyczE2ID0gbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKTsKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoY2hhcmFjdGVyczE2LCBtX2ltcGwtPmxlbmd0aCgpKTsKICAgICAgICAgfQotCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoMCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
VmVjdG9yPFVDaGFyPiBTdHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29u
c3QKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9u
KCk7CisgICAgcmVzdWx0LmFwcGVuZCgwKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBTdHJp
bmcgU3RyaW5nOjpudW1iZXIoaW50IG51bWJlcikKIHsKICAgICByZXR1cm4gbnVtYmVyVG9TdHJp
bmdTaWduZWQ8U3RyaW5nPihudW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggZjk0
ZWRkOTM5MDQ0NjU1N2Y4NzZmNjA2YmIyYzczMWRjNjk4ZjY1NC4uMGYxNjYyZGY0YmM4NDBjMzdk
N2ZmZDc1NWFjMDVhNDUyMTA2YzcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0yMDIs
NiArMjAyLDcgQEAgY2xhc3MgU3RyaW5nIGZpbmFsIHsKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gTWF4TGVuZ3RoKSBjb25zdCB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0cmluZy5pbXBsKCksIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBj
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkgY29u
c3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0
KHVuc2lnbmVkKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCBmNGExZTg5MjEwZmYwYTgzMGM0YmJlZTNkODRjNmQ5MWIxZDI5
MjM5Li4yYjk5MDRlNWQyYjEyZTg5MGYyNzNhYzczYzg2ZThhMzY1MWJlYzZiIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTA3LTIxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gQWRkIEludGwuU2VnbWVudGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM2MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLXNlZ21lbnRlci5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGROb3RUaHJvdyk6CisgICAgICAg
IChmdW5jKToKKwogMjAyMC0wNy0yMSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNjQzMzApOiBpbmZpbml0ZSBsb29wIGlu
IEpTQyBzdHJlc3MgdGVzdHMgdXNpbmcgY2xvb3AKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2ludGwtc2VnbWVudGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1zZWdtZW50ZXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODY0NzJlNTgzZGE0Yjk2ZGI5Zjc0NTcyMjAxY2ZkNDUyOGQ5OTFhNgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtc2VnbWVudGVyLmpzCkBAIC0wLDAgKzEs
MzI0IEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VJbnRsU2VnbWVudGVyPTEiKQorCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkTm90VGhyb3coZnVuYykgeworICAgIGZ1bmMoKTsKK30KKworewor
ICAgIHNob3VsZEJlKEludGwuU2VnbWVudGVyIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOwor
ICAgIHNob3VsZEJlKEludGwuU2VnbWVudGVyLmxlbmd0aCwgMCk7CisgICAgc2hvdWxkQmUoT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlNlZ21lbnRlciwgJ3Byb3RvdHlwZScp
LndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLlNlZ21lbnRlciwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsK
KyAgICBzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuU2VnbWVu
dGVyLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxzZSk7CisgICAgbGV0IHNlZ21lbnRl
ciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiZnIiKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShzZWdtZW50ZXIucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJmciIsImdyYW51bGFy
aXR5IjoiZ3JhcGhlbWUifWApOworICAgIHNob3VsZEJlKHNlZ21lbnRlci50b1N0cmluZygpLCBg
W29iamVjdCBJbnRsLlNlZ21lbnRlcl1gKTsKKyAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZXcg
SW50bC5TZWdtZW50ZXIoKSk7Cit9CisKK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwu
U2VnbWVudGVyKCJmciIsIHtncmFudWxhcml0eTogIndvcmQifSk7CisKKyAgICBsZXQgaW5wdXQg
PSAiTW9pPyAgTidlc3QtY2UgcGFzLiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNl
Z21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgMywgIk1v
aSIsIHRydWUgXSwKKyAgICAgICAgWyAzLCA0LCAiPyIsIGZhbHNlIF0sCisgICAgICAgIFsgNCwg
NiwgIiAgIiwgZmFsc2UgXSwKKyAgICAgICAgWyA2LCAxMSwgIk4nZXN0IiwgdHJ1ZSBdLAorICAg
ICAgICBbIDExLCAxMiwgIi0iLCBmYWxzZSBdLAorICAgICAgICBbIDEyLCAxNCwgImNlIiwgdHJ1
ZSBdLAorICAgICAgICBbIDE0LCAxNSwgIiAiLCBmYWxzZSBdLAorICAgICAgICBbIDE1LCAxOCwg
InBhcyIsIHRydWUgXSwKKyAgICAgICAgWyAxOCwgMTksICIuIiwgZmFsc2UgXSwKKyAgICBdOwor
ICAgIGxldCBjdXJzb3IgPSAwOworICAgIGZvciAobGV0IHtzZWdtZW50LCBpbmRleCwgaXNXb3Jk
TGlrZX0gb2Ygc2VnbWVudHMpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbY3Vyc29y
KytdOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMF0sIGluZGV4KTsKKyAgICAgICAgc2hvdWxk
QmUocmVzdWx0WzFdLCBpbmRleCArIHNlZ21lbnQubGVuZ3RoKTsKKyAgICAgICAgc2hvdWxkQmUo
cmVzdWx0WzJdLCBzZWdtZW50KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzNdLCBpc1dvcmRM
aWtlKTsKKyAgICB9CisKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlNlZ21lbnRl
ci5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2ZyJykpLCBgWyJmciJdYCk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoc2VnbWVudGVyLnJlc29sdmVkT3B0aW9ucygpKSwgYHsibG9jYWxlIjoiZnIi
LCJncmFudWxhcml0eSI6IndvcmQifWApOworfQorCit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5l
dyBJbnRsLlNlZ21lbnRlcigiZnIiLCB7Z3JhbnVsYXJpdHk6ICJncmFwaGVtZSJ9KTsKKworICAg
IGxldCBpbnB1dCA9ICJNb2k/ICBOJ2VzdC1jZSBwYXMuIjsKKyAgICBsZXQgc2VnbWVudHMgPSBz
ZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3Ig
KGxldCB7c2VnbWVudCwgaW5kZXgsIGlzV29yZExpa2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAg
IGxldCBjdXJyZW50ID0gY3Vyc29yKys7CisgICAgICAgIHNob3VsZEJlKHNlZ21lbnQsIGlucHV0
W2N1cnJlbnRdKTsKKyAgICAgICAgc2hvdWxkQmUoaW5kZXgsIGN1cnJlbnQpOworICAgICAgICBz
aG91bGRCZShpc1dvcmRMaWtlLCB1bmRlZmluZWQpOworICAgIH0KKworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KHNlZ21lbnRlci5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImZy
IiwiZ3JhbnVsYXJpdHkiOiJncmFwaGVtZSJ9YCk7Cit9CisKK3sKKyAgICBsZXQgc2VnbWVudGVy
ID0gbmV3IEludGwuU2VnbWVudGVyKCJlbiIsIHtncmFudWxhcml0eTogInNlbnRlbmNlIn0pOwor
CisgICAgbGV0IGlucHV0ID0gIlBlcmZvcm1hbmNlIGlzIGEgdG9wIHByaW9yaXR5IGZvciBXZWJL
aXQuIFdlIGFkaGVyZSB0byBhIHNpbXBsZSBkaXJlY3RpdmUgZm9yIGFsbCB3b3JrIHdlIGRvIG9u
IFdlYktpdDogVGhlIHdheSB0byBtYWtlIGEgcHJvZ3JhbSBmYXN0ZXIgaXMgdG8gbmV2ZXIgbGV0
IGl0IGdldCBzbG93ZXIuIjsKKyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChp
bnB1dCk7CisKKyAgICBsZXQgcmVzdWx0cyA9IFsKKyAgICAgICAgWyAwLCA0MiwgIlBlcmZvcm1h
bmNlIGlzIGEgdG9wIHByaW9yaXR5IGZvciBXZWJLaXQuICIsIHVuZGVmaW5lZCBdLAorICAgICAg
ICBbIDQyLCAxNjcsICJXZSBhZGhlcmUgdG8gYSBzaW1wbGUgZGlyZWN0aXZlIGZvciBhbGwgd29y
ayB3ZSBkbyBvbiBXZWJLaXQ6IFRoZSB3YXkgdG8gbWFrZSBhIHByb2dyYW0gZmFzdGVyIGlzIHRv
IG5ldmVyIGxldCBpdCBnZXQgc2xvd2VyLiIsIHVuZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0
IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBv
ZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJzb3IrK107Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91bGRCZShyZXN1
bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRb
Ml0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29yZExpa2UpOwor
ICAgIH0KKworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRlci5yZXNvbHZlZE9w
dGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwiZ3JhbnVsYXJpdHkiOiJzZW50ZW5jZSJ9YCk7Cit9
CisKKy8vIGxhbmd1YWdlcyB3aXRob3V0IHNwYWNlcy4KK3sKKyAgICBsZXQgc2VnbWVudGVyID0g
bmV3IEludGwuU2VnbWVudGVyKCJqYSIsIHtncmFudWxhcml0eTogIndvcmQifSk7CisKKyAgICAv
LyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JX0FtX2FfQ2F0CisgICAgbGV0IGlucHV0
ID0gIuWQvui8qeOBr+eMq+OBp+OBguOCi+OAguWQjeWJjeOBr+OBvuOBoOeEoeOBhOOAguOBqeOB
k+OBp+eUn+OCjOOBn+OBi+OBqOOCk+OBqOimi+W9k+OBjOOBpOOBi+OBrOOAgiI7CisgICAgbGV0
IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMg
PSBbCisgICAgICAgIFsgMCwgMiwgIuWQvui8qSIsIHRydWUgXSwKKyAgICAgICAgWyAyLCAzLCAi
44GvIiwgdHJ1ZSBdLAorICAgICAgICBbIDMsIDQsICLnjKsiLCB0cnVlIF0sCisgICAgICAgIFsg
NCwgNSwgIuOBpyIsIHRydWUgXSwKKyAgICAgICAgWyA1LCA3LCAi44GC44KLIiwgdHJ1ZSBdLAor
ICAgICAgICBbIDcsIDgsICLjgIIiLCBmYWxzZSBdLAorICAgICAgICBbIDgsIDEwLCAi5ZCN5YmN
IiwgdHJ1ZSBdLAorICAgICAgICBbIDEwLCAxMSwgIuOBryIsIHRydWUgXSwKKyAgICAgICAgWyAx
MSwgMTMsICLjgb7jgaAiLCB0cnVlIF0sCisgICAgICAgIFsgMTMsIDE1LCAi54Sh44GEIiwgdHJ1
ZSBdLAorICAgICAgICBbIDE1LCAxNiwgIuOAgiIsIGZhbHNlIF0sCisgICAgICAgIFsgMTYsIDE4
LCAi44Gp44GTIiwgdHJ1ZSBdLAorICAgICAgICBbIDE4LCAxOSwgIuOBpyIsIHRydWUgXSwKKyAg
ICAgICAgWyAxOSwgMjEsICLnlJ/jgowiLCB0cnVlIF0sCisgICAgICAgIFsgMjEsIDIzLCAi44Gf
44GLIiwgdHJ1ZSBdLAorICAgICAgICBbIDIzLCAyNiwgIuOBqOOCk+OBqCIsIHRydWUgXSwKKyAg
ICAgICAgWyAyNiwgMjgsICLopovlvZMiLCB0cnVlIF0sCisgICAgICAgIFsgMjgsIDI5LCAi44GM
IiwgdHJ1ZSBdLAorICAgICAgICBbIDI5LCAzMCwgIuOBpCIsIHRydWUgXSwKKyAgICAgICAgWyAz
MCwgMzEsICLjgYsiLCB0cnVlIF0sCisgICAgICAgIFsgMzEsIDMyLCAi44GsIiwgdHJ1ZSBdLAor
ICAgICAgICBbIDMyLCAzMywgIuOAgiIsIGZhbHNlIF0sCisgICAgXTsKKyAgICBsZXQgY3Vyc29y
ID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVudCwgaW5kZXgsIGlzV29yZExpa2V9IG9mIHNlZ21l
bnRzKSB7CisgICAgICAgIGxldCByZXN1bHQgPSByZXN1bHRzW2N1cnNvcisrXTsKKyAgICAgICAg
c2hvdWxkQmUocmVzdWx0WzBdLCBpbmRleCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwg
aW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgc2Vn
bWVudCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFszXSwgaXNXb3JkTGlrZSk7CisgICAgfQor
fQorCit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiamEiLCB7Z3Jh
bnVsYXJpdHk6ICJncmFwaGVtZSJ9KTsKKworICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0lfQW1fYV9DYXQKKyAgICBsZXQgaW5wdXQgPSAi5ZC+6Lyp44Gv54yr44Gn44GC44KL
44CC5ZCN5YmN44Gv44G+44Gg54Sh44GE44CC44Gp44GT44Gn55Sf44KM44Gf44GL44Go44KT44Go
6KaL5b2T44GM44Gk44GL44Gs44CCIjsKKyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2Vn
bWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVzdWx0cyA9IFsKKyAgICAgICAgWyAwLCAxLCAi5ZC+
IiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgMSwgMiwgIui8qSIsIHVuZGVmaW5lZCBdLAorICAg
ICAgICBbIDIsIDMsICLjga8iLCB1bmRlZmluZWQgXSwKKyAgICAgICAgWyAzLCA0LCAi54yrIiwg
dW5kZWZpbmVkIF0sCisgICAgICAgIFsgNCwgNSwgIuOBpyIsIHVuZGVmaW5lZCBdLAorICAgICAg
ICBbIDUsIDYsICLjgYIiLCB1bmRlZmluZWQgXSwKKyAgICAgICAgWyA2LCA3LCAi44KLIiwgdW5k
ZWZpbmVkIF0sCisgICAgICAgIFsgNywgOCwgIuOAgiIsIHVuZGVmaW5lZCBdLAorICAgICAgICBb
IDgsIDksICLlkI0iLCB1bmRlZmluZWQgXSwKKyAgICAgICAgWyA5LCAxMCwgIuWJjSIsIHVuZGVm
aW5lZCBdLAorICAgICAgICBbIDEwLCAxMSwgIuOBryIsIHVuZGVmaW5lZCBdLAorICAgICAgICBb
IDExLCAxMiwgIuOBviIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDEyLCAxMywgIuOBoCIsIHVu
ZGVmaW5lZCBdLAorICAgICAgICBbIDEzLCAxNCwgIueEoSIsIHVuZGVmaW5lZCBdLAorICAgICAg
ICBbIDE0LCAxNSwgIuOBhCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE1LCAxNiwgIuOAgiIs
IHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE2LCAxNywgIuOBqSIsIHVuZGVmaW5lZCBdLAorICAg
ICAgICBbIDE3LCAxOCwgIuOBkyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE4LCAxOSwgIuOB
pyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE5LCAyMCwgIueUnyIsIHVuZGVmaW5lZCBdLAor
ICAgICAgICBbIDIwLCAyMSwgIuOCjCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIxLCAyMiwg
IuOBnyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIyLCAyMywgIuOBiyIsIHVuZGVmaW5lZCBd
LAorICAgICAgICBbIDIzLCAyNCwgIuOBqCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI0LCAy
NSwgIuOCkyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI1LCAyNiwgIuOBqCIsIHVuZGVmaW5l
ZCBdLAorICAgICAgICBbIDI2LCAyNywgIuimiyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI3
LCAyOCwgIuW9kyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI4LCAyOSwgIuOBjCIsIHVuZGVm
aW5lZCBdLAorICAgICAgICBbIDI5LCAzMCwgIuOBpCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBb
IDMwLCAzMSwgIuOBiyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDMxLCAzMiwgIuOBrCIsIHVu
ZGVmaW5lZCBdLAorICAgICAgICBbIDMyLCAzMywgIuOAgiIsIHVuZGVmaW5lZCBdLAorICAgIF07
CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dv
cmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJz
b3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91
bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRC
ZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29y
ZExpa2UpOworICAgIH0KK30KKworeworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdt
ZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAic2VudGVuY2UifSk7CisKKyAgICAvLyBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9JX0FtX2FfQ2F0CisgICAgbGV0IGlucHV0ID0gIuWQvui8
qeOBr+eMq+OBp+OBguOCi+OAguWQjeWJjeOBr+OBvuOBoOeEoeOBhOOAguOBqeOBk+OBp+eUn+OC
jOOBn+OBi+OBqOOCk+OBqOimi+W9k+OBjOOBpOOBi+OBrOOAgiI7CisgICAgbGV0IHNlZ21lbnRz
ID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAg
ICAgIFsgMCwgOCwgIuWQvui8qeOBr+eMq+OBp+OBguOCi+OAgiIsIHVuZGVmaW5lZCBdLAorICAg
ICAgICBbIDgsIDE2LCAi5ZCN5YmN44Gv44G+44Gg54Sh44GE44CCIiwgdW5kZWZpbmVkIF0sCisg
ICAgICAgIFsgMTYsIDMzLCAi44Gp44GT44Gn55Sf44KM44Gf44GL44Go44KT44Go6KaL5b2T44GM
44Gk44GL44Gs44CCIiwgdW5kZWZpbmVkIF0sCisgICAgXTsKKyAgICBsZXQgY3Vyc29yID0gMDsK
KyAgICBmb3IgKGxldCB7c2VnbWVudCwgaW5kZXgsIGlzV29yZExpa2V9IG9mIHNlZ21lbnRzKSB7
CisgICAgICAgIGxldCByZXN1bHQgPSByZXN1bHRzW2N1cnNvcisrXTsKKyAgICAgICAgc2hvdWxk
QmUocmVzdWx0WzBdLCBpbmRleCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgaW5kZXgg
KyBzZWdtZW50Lmxlbmd0aCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgc2VnbWVudCk7
CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFszXSwgaXNXb3JkTGlrZSk7CisgICAgfQorfQorCisv
LyBTdXJyb2dhdGUgcGFpcnMuCit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21l
bnRlcigiamEiLCB7Z3JhbnVsYXJpdHk6ICJncmFwaGVtZSJ9KTsKKyAgICBsZXQgaW5wdXQgPSAi
8KCut+mHjuWutiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQp
OworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgMiwgIvCgrrciLCB1bmRlZmlu
ZWQgXSwKKyAgICAgICAgWyAyLCAzLCAi6YeOIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgMywg
NCwgIuWutiIsIHVuZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAg
Zm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAg
ICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJl
c3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2Vn
bWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAg
ICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29yZExpa2UpOworICAgIH0KK30KKworeworICAg
IGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAi
d29yZCJ9KTsKKyAgICBsZXQgaW5wdXQgPSAi8KCut+mHjuWutiI7CisgICAgbGV0IHNlZ21lbnRz
ID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAg
ICAgIFsgMCwgMiwgIvCgrrciLCB0cnVlIF0sCisgICAgICAgIFsgMiwgNCwgIumHjuWutiIsIHRy
dWUgXSwKKyAgICBdOworICAgIGxldCBjdXJzb3IgPSAwOworICAgIGZvciAobGV0IHtzZWdtZW50
LCBpbmRleCwgaXNXb3JkTGlrZX0gb2Ygc2VnbWVudHMpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9
IHJlc3VsdHNbY3Vyc29yKytdOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMF0sIGluZGV4KTsK
KyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCBpbmRleCArIHNlZ21lbnQubGVuZ3RoKTsKKyAg
ICAgICAgc2hvdWxkQmUocmVzdWx0WzJdLCBzZWdtZW50KTsKKyAgICAgICAgc2hvdWxkQmUocmVz
dWx0WzNdLCBpc1dvcmRMaWtlKTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgc2VnbWVudGVyID0g
bmV3IEludGwuU2VnbWVudGVyKCJqYSIsIHtncmFudWxhcml0eTogInNlbnRlbmNlIn0pOworICAg
IGxldCBpbnB1dCA9ICLwoK636YeO5a62IjsKKyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIu
c2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVzdWx0cyA9IFsKKyAgICAgICAgWyAwLCA0LCAi
8KCut+mHjuWutiIsIHVuZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7Cisg
ICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgewor
ICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJl
KHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsg
c2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOwor
ICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29yZExpa2UpOworICAgIH0KK30KKworewor
ICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5
OiAiZ3JhcGhlbWUifSk7CisgICAgbGV0IGlucHV0ID0gIvCgrrfph47lrrYiOworICAgIGxldCBz
ZWdtZW50cyA9IHNlZ21lbnRlci5zZWdtZW50KGlucHV0KTsKKworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmcoMCkpLCBgeyJzZWdtZW50Ijoi8KCutyIsImlu
ZGV4IjowLCJpbnB1dCI6IvCgrrfph47lrrYifWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmcoMSkpLCBgeyJzZWdtZW50Ijoi8KCutyIsImluZGV4Ijow
LCJpbnB1dCI6IvCgrrfph47lrrYifWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNl
Z21lbnRzLmNvbnRhaW5pbmcoMikpLCBgeyJzZWdtZW50Ijoi6YeOIiwiaW5kZXgiOjIsImlucHV0
Ijoi8KCut+mHjuWutiJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMu
Y29udGFpbmluZygzKSksIGB7InNlZ21lbnQiOiLlrrYiLCJpbmRleCI6MywiaW5wdXQiOiLwoK63
6YeO5a62In1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShzZWdtZW50cy5jb250YWlu
aW5nKDQpKSwgdW5kZWZpbmVkKTsKK30KKworeworICAgIC8vIOKUgzAgMSAyIDMgNCA14pSDNuKU
gzfilIM44pSDOQorICAgIC8vIOKUg0EgbCBsIG8gbiBz4pSDLeKUg3nilIMh4pSDCisgICAgbGV0
IGlucHV0ID0gIkFsbG9ucy15ISI7CisKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2Vn
bWVudGVyKCJmciIsIHtncmFudWxhcml0eTogIndvcmQifSk7CisgICAgbGV0IHNlZ21lbnRzID0g
c2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworICAgIGxldCBjdXJyZW50ID0gdW5kZWZpbmVkOwor
CisgICAgY3VycmVudCA9IHNlZ21lbnRzLmNvbnRhaW5pbmcoMCk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiJBbGxvbnMiLCJpbmRleCI6MCwiaW5w
dXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtlIjp0cnVlfWApOworCisgICAgY3VycmVudCA9IHNl
Z21lbnRzLmNvbnRhaW5pbmcoNSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVu
dCksIGB7InNlZ21lbnQiOiJBbGxvbnMiLCJpbmRleCI6MCwiaW5wdXQiOiJBbGxvbnMteSEiLCJp
c1dvcmRMaWtlIjp0cnVlfWApOworCisgICAgY3VycmVudCA9IHNlZ21lbnRzLmNvbnRhaW5pbmco
Nik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiIt
IiwiaW5kZXgiOjYsImlucHV0IjoiQWxsb25zLXkhIiwiaXNXb3JkTGlrZSI6ZmFsc2V9YCk7CisK
KyAgICBjdXJyZW50ID0gc2VnbWVudHMuY29udGFpbmluZyhjdXJyZW50LmluZGV4ICsgY3VycmVu
dC5zZWdtZW50Lmxlbmd0aCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCks
IGB7InNlZ21lbnQiOiJ5IiwiaW5kZXgiOjcsImlucHV0IjoiQWxsb25zLXkhIiwiaXNXb3JkTGlr
ZSI6dHJ1ZX1gKTsKKworICAgIGN1cnJlbnQgPSBzZWdtZW50cy5jb250YWluaW5nKGN1cnJlbnQu
aW5kZXggKyBjdXJyZW50LnNlZ21lbnQubGVuZ3RoKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShjdXJyZW50KSwgYHsic2VnbWVudCI6IiEiLCJpbmRleCI6OCwiaW5wdXQiOiJBbGxvbnMt
eSEiLCJpc1dvcmRMaWtlIjpmYWxzZX1gKTsKKworICAgIGN1cnJlbnQgPSBzZWdtZW50cy5jb250
YWluaW5nKGN1cnJlbnQuaW5kZXggKyBjdXJyZW50LnNlZ21lbnQubGVuZ3RoKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW50KSwgdW5kZWZpbmVkKTsKKyAgICAvLyDihpIgdW5k
ZWZpbmVkCit9Cit7CisgICAgbGV0IGlucHV0ID0gIiI7CisKKyAgICBsZXQgc2VnbWVudGVyID0g
bmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtncmFudWxhcml0eTogIndvcmQifSk7CisgICAgbGV0
IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmluZygwKSksIHVuZGVmaW5lZCk7Cit9Cit7Cisg
ICAgbGV0IGlucHV0ID0gIiAiOworCisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21l
bnRlcigiZnIiLCB7Z3JhbnVsYXJpdHk6ICJ3b3JkIn0pOworICAgIGxldCBzZWdtZW50cyA9IHNl
Z21lbnRlci5zZWdtZW50KGlucHV0KTsKKworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNl
Z21lbnRzLmNvbnRhaW5pbmcoMCkpLCBgeyJzZWdtZW50IjoiICIsImluZGV4IjowLCJpbnB1dCI6
IiAiLCJpc1dvcmRMaWtlIjpmYWxzZX1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShz
ZWdtZW50cy5jb250YWluaW5nKDEpKSwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShzZWdtZW50cy5jb250YWluaW5nKDIpKSwgdW5kZWZpbmVkKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404896</attachid>
            <date>2020-07-21 19:57:50 -0700</date>
            <delta_ts>2020-07-22 12:00:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213638-20200721195749.patch</filename>
            <type>text/plain</type>
            <size>125647</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YjA4YmQ4NGFiOThlMWNhNDk5ZDQ3YjAzYTc5ZjM4Mzc1MzgxYWQ5Li4yYmRiZDc1MjgwNTQyZmFm
NmZjYmU0MjJiMjA1ZTQ2MTJmOTdjZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMC0wNy0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBJbnRsLlNlZ21lbnRlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNjM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIEludGwu
U2VnbWVudGVyWzFdLiBJbnRsLlNlZ21lbnRlciBvZmZlcnMgYWNjZXNzIHRvIElDVSBicmVhayBp
dGVyYXRvciBmZWF0dXJlLCB3aGljaCBjYW4gYnJlYWsgc3RyaW5ncyBpbnRvIGdyYXBoZW1lIGNs
dXN0ZXIgLyB3b3JkcyAvIHNlbnRlbmNlcy4KKworICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHVi
LmNvbS90YzM5L3Byb3Bvc2FsLWludGwtc2VnbWVudGVyCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6Y3JlYXRlU2VnbWVudGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmludGxTZWdtZW50ZXJBdmFp
bGFibGVMb2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAg
KiBydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
SW50bFNlZ21lbnRJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJ
dGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVy
YXRvcjo6SW50bFNlZ21lbnRJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50SXRl
cmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRv
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50SXRlcmF0b3I6Om5l
eHQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6SW50bFNlZ21l
bnRJdGVyYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZUZ1bmNOZXh0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50SXRl
cmF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkludGxTZWdtZW50ZXI6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkludGxTZWdtZW50ZXI6OkludGxTZWdtZW50ZXIpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVu
dGVyOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OmluaXRp
YWxpemVTZWdtZW50ZXIpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyOjpzZWdtZW50IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6Z3JhbnVsYXJpdHlTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpJbnRsU2VnbWVudGVyOjpjcmVhdGVTZWdtZW50RGF0YU9iamVjdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxT
ZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRl
ckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVu
dGVyQ29uc3RydWN0b3I6OkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RJbnRsU2VnbWVudGVyKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxTZWdtZW50
ZXIpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyQ29uc3RydWN0b3JTdXBwb3J0ZWRMb2Nh
bGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmg6IEFk
ZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlKToK
KyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1NlZ21lbnQpOgorICAgICAg
ICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bFNlZ21lbnRzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxTZWdt
ZW50czo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRzOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudHM6OkludGxTZWdtZW50cyk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50czo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRs
U2VnbWVudHM6OmNvbnRhaW5pbmcpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudHM6OmNyZWF0
ZVNlZ21lbnRJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudHMuaDogQWRkZWQuCisgICAgICAg
ICogcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bFNlZ21lbnRzUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2Vn
bWVudHNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxTZWdt
ZW50c1Byb3RvdHlwZTo6SW50bFNlZ21lbnRzUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50
bFNlZ21lbnRzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxT
ZWdtZW50c1Byb3RvdHlwZUZ1bmNDb250YWluaW5nKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21l
bnRzUHJvdG90eXBlRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50
c1Byb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2VnbWVudEl0ZXJhdG9y
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNlZ21lbnRlclN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZWdtZW50c1N0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
Y3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwog
MjAyMC0wNy0yMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggRmluYWxpemF0aW9uUmVnaXN0cnkgR0MgZmluYWxpemVyIGludGVyYXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggNTM5MGI4ZDU3YzNmZDg0MjhmNDY3MzczZGUzNDg0YzQ1YTZhZGE5MC4uZjQwYzVjYmI0NzA2
NWU3YjU2NTY2OTkyOGY3NjY3NzlkY2Q0ODVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0w
Ny0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0Nd
IEFkZCBJbnRsLlNlZ21lbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEzNjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmc6OmNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6U3RyaW5nOjpjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbiBjb25zdCk6CisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMjAtMDctMjEgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIEFWUm91dGVQaWNrZXJWaWV3IHdo
ZW4gYXZhaWxhYmxlIGZvciBjaG9vc2luZyBBaXJQbGF5IGRldmljZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiMDVjYjVjYjMyYmZlMDRjM2UzNzBmNWZkODJkNDU0ZTEz
NGNiZmJlLi42YTM5NjlkZjdmMzMwOGZhNGU5MjljODdhZjU1NDg3ZDFlYTdjZGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MCw2ICs4MCwxMCBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwCiAgICAgcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAor
ICAgIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1l
L0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxTZWdtZW50ZXJQ
cm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCiAgICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA1YTBjODgzZDUzNDhlNjU2N2FlZmY5NmFlYmMwODFmYmEwNzZjZTM3Li4zY2Mw
OTVhMmFjYmJmZDY1NTkzNTNlZDQ0MWE5ZmIyOTEzMzAxNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTQ3
LDYgKzE0NywxMCBAQCAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0
cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRv
clByb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0
cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBl
LmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCiAk
KFBST0pFQ1RfRElSKS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1Rf
RElSKS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9K
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDJiZGY1YjJj
ODIyYTZkOWU3YjZmNDU2YmIwYTk2MTYzZWUxZDZkMTAuLmNlYjkyOGZkOTc3NTZkMDBiZDk3Y2Nk
ZGUzZjU2MTE5YTA0MTZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTM3LDYgKzM3LDEwIEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsUGx1cmFs
UnVsZXNDb25zdHJ1Y3Rvci5sCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
dGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IubHV0
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9J
bnRsU2VnbWVudGVyUHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmx1dC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRp
bnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5sdXQuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkNWQ2ZjJiYmQwMTMzMDdjODRhODEw
MzdjMDFiNTIxY2JkMmFhNGYwLi45YTllYWU5M2Y2OWM3ZmFhYWRmMmIyNWM3ZDI2YWE5OWE2ZDU4
OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTY4
LDYgKzE2OCwxMCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
bHV0LmggXAogICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggXAorICAg
IEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxTZWdtZW50ZXJD
b25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bFNlZ21lbnRlclByb3RvdHlwZS5sdXQuaCBcCisg
ICAgSW50bFNlZ21lbnRzUHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFWaWV3UHJvdG90eXBl
Lmx1dC5oIFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCiAgICAgSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUz
NGU3NzA1M2Y4MTBiOWYyNWEyNmZiYWEzZDE1N2JiNTQwNTk0MWEuLjljYTc5MzM1ZWE3ZDMzNDE3
MDUxYjZjMTdmMmNmZGZhMWY1ODMyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC02OTUsNyArNjk1LDYgQEAKIAkJMEZFQzg1OEMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclN0YWNr
U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
Qzg1NjcxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclN0YWNrU2xvdC5oICovOyB9OwogCQkwRkVDODU4
RTFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2OTFCREFDREM3MDA4MEZGNzQgLyogQWlyVG1wLmgg
Ki87IH07CiAJCTBGRUM4NThGMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXBJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2QTFCREFD
REM3MDA4MEZGNzQgLyogQWlyVG1wSW5saW5lcy5oICovOyB9OwotCQkwRkVDODU4RjJCREFDREM3
MDA4MEZGNzQgLyogQWlyVG1wV2lkdGhJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU4RjJCREFDREM3MDA4MEZGNzQgLyogQWlyVG1w
V2lkdGhJbmxpbmVzLmggKi87IH07CiAJCTBGRUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJW
YWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFQzg1NkMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRlLmggKi87IH07CiAJCTBGRUM4
NUEzMUJEQjVDRjEwMDgwRkY3NCAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2
REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJMEZFQzg1QTQxQkRCNUNGMTAw
ODBGRjc0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CkBAIC05MzIsMTkgKzkzMSwxOSBAQAogCQk1
MzBGREU3NTIxRkFCMDA2MDAwNTlENjUgLyogdGVzdEluY2x1ZGVzLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzBGREU3MzIxRkFBRkM2MDAwNTlENjUg
LyogdGVzdEluY2x1ZGVzLm0gKi87IH07CiAJCTUzMTFCRDRCMUVBNTgxRTUwMDUyNTI4MSAvKiBX
YXNtT01HUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMUJENDkxRUE1ODFFNTAwNTI1MjgxIC8qIFdhc21PTUdQbGFuLmggKi87IH07CiAJCTUz
MTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXYXNtUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdh
c21QbGFuLmggKi87IH07Ci0gICAgICAgICAgICAgICAgNTMxODA0NUMyMkVBQUM0QjAwNEE3MzQy
IC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFsdWUuaCAq
LzsgfTsKLSAgICAgICAgICAgICAgICA1MzFFRTdCQTIyREU2QkJCMDAzMERBODEgLyogRmluYWxp
emF0aW9uUmVnaXN0cnlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzMUVFN0I5MjJERTZCQkIwMDMwREE4MSAvKiBGaW5hbGl6YXRpb25S
ZWdpc3RyeVByb3RvdHlwZS5oICovOyB9OwotICAgICAgICAgICAgICAgIDUzMzNCQkRCMjExMEY3
RDIwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAv
KiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLzsgfTsKKwkJNTMxODA0NUMyMkVBQUM0QjAw
NEE3MzQyIC8qIEIzRXh0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzE4MDQ1QjIyRUFBQzRCMDA0QTczNDIgLyogQjNFeHRyYWN0VmFs
dWUuaCAqLzsgfTsKKwkJNTMxRUU3QkEyMkRFNkJCQjAwMzBEQTgxIC8qIEZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzFFRTdCOTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQ
cm90b3R5cGUuaCAqLzsgfTsKKwkJNTMzM0JCREIyMTEwRjdEMjAwNzYxOEVDIC8qIERGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwICovOyB9OwogCQk1MzMzQkJEQzIxMTBGN0Q5MDA3NjE4RUMgLyogREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZFQzlEQzIxMzI4REY4MjAwMkIyQUQ3IC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCAqLzsgfTsK
IAkJNTMzM0JCREQyMTEwRjdFMTAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGNEMxNDM1
M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovOyB9OwotICAgICAgICAg
ICAgICAgIDUzMzhFMkE3MjM5NkVGRkIwMEM2MUJBRCAvKiBDaGVja3BvaW50T1NSRXhpdFNpZGVT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMz
OEUyQTYyMzk2RUZFQzAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTMzOEUyQTcy
Mzk2RUZGQjAwQzYxQkFEIC8qIENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzM4RTJBNjIzOTZFRkVDMDBD
NjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MzM4RUJBMzIzQUIwNEI4MDAzODI2NjIg
LyogRlRMU2VsZWN0UHJlZGljdGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzMzhFQkEyMjNBQjA0QTMwMDM4MjY2MiAvKiBGVExTZWxlY3RQ
cmVkaWN0YWJpbGl0eS5oICovOyB9OwotICAgICAgICAgICAgICAgIDUzM0QwNzQ0MjJDMkQ3OTcw
MDREMkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzNEMDc0MzIyQzJENzk3MDA0RDJG
RTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oICovOyB9OworCQk1MzNEMDc0
NDIyQzJENzk3MDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMzRDA3NDMyMkMy
RDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuaCAqLzsgfTsK
IAkJNTMzRDA3NDcyMkMyRDlEMjAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzM0QwNzQ2MjJD
MkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggKi87IH07Ci0gICAgICAg
ICAgICAgICAgNTM0MUZDNzIxREFDMzQzQzAwRTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDFG
QzcxMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggKi87IH07CisJ
CTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQxRkM3MTFEQUMz
NDNDMDBFN0U0RDcgLyogQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICovOyB9OwogCQk1MzQ2Mzg3
MTFFNzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDYzODcwMUU3MENGM0QwMEYxMkFDMSAvKiBK
U1J1bkxvb3BUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0gICAgICAgICAgICAgICAgNTM0NjM4NzUxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVy
cmVkV29ya1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotICAgICAgICAgICAg
ICAgIDUzNDg2QkI3MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2QkI2MUMxNzk1QzMwMEY2
RjNBRiAvKiBKU1R5cGVkQXJyYXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CisJCTUzNDYzODc1MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtU
aW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0
NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTM0ODZCQjcxQzE3OTVDMzAw
RjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0OTAy
ODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjgg
LyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLzsgfTsKIAkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3NkE3
IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0QzQ1N0IxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oICovOyB9OwogCQk1MzRFMDM0RTFFNEQ0QjE2MDAyMTNG
NjQgLyogQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTM0RTAzNEQxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCAqLzsgfTsK
QEAgLTE3ODUsNiArMTc4NCwxOCBAQAogCQlERTI2RTkwMzFDQjVERDA1MDBEMkJFODIgLyogQnVp
bHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFi
bGVDcmVhdG9yLmggKi87IH07CiAJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUxMjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAw
MzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMwNzE3ODMyNEM3ODI3MTAwREYwNjQ0IC8qIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEEzQkY4ODUwMjQ0ODBCRTEwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmggKi87IH07CisJCUUzMDcxNzg0MjRDNzgyNzcwMERGMDY0NCAvKiBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTMwNzE3ODUyNEM3ODI3OTAwREYwNjQ0IC8qIElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQkY4ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi87IH07CisJCUUzMDcxNzg2MjRDNzgyN0MwMERG
MDY0NCAvKiBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMDcxNzdEMjRDNzgyNDYwMERGMDY0NCAvKiBJbnRs
U2VnbWVudGVyQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTMwNzE3ODcyNEM3ODI3RTAwREYwNjQ0
IC8qIEludGxTZWdtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMDcxNzgxMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyLmggKi87
IH07CisJCUUzMDcxNzg4MjRDNzgyODEwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzA3MTc3
RjI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlclByb3RvdHlwZS5oICovOyB9OworCQlF
MzA3MTc4OTI0Qzc4Mjg2MDBERjA2NDQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RDVGQjE4RDIwNzQ0
QUU4MDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggKi87IH07CisJCUUzMDcx
NzhBMjRDNzgyOEMwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOTAyMDc0NEJG
MTAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi87IH07CisJCUUzMDcx
NzhCMjRDNzgyOEYwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMTkyMjA3NDRCRjIwMDVEREY2NCAv
KiBJbnRsUGx1cmFsUnVsZXMuaCAqLzsgfTsKKwkJRTMwNzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8q
IEludGxMb2NhbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzQUZGOTMwMjQ1QTNDRkMwMEM5QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90
eXBlLmggKi87IH07CisJCUUzMDcxNzhEMjRDNzgyOUEwMERGMDY0NCAvKiBJbnRsTG9jYWxlQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAqLzsg
fTsKKwkJRTMwNzE3OEUyNEM3ODI5RDAwREYwNjQ0IC8qIEludGxMb2NhbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5
QkEzQiAvKiBJbnRsTG9jYWxlLmggKi87IH07CiAJCUUzMTE3OUFBMjI4ODM4NjEwMDUxNEIyQyAv
KiBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8qIFN5bWJvbFRhYmxl
T3JTY29wZURlcHRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVDNUZF
MDgwMDA2QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMxNjE4MTUxRUM1RkUyNzAwMDZBMjE4IC8qIERPTUF0
dHJpYnV0ZUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMxNjE4MTIxRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRl
clNldHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xODcyLDYgKzE4ODMsMTAgQEAKIAkJRTNEMzUxNUYyNDFCODlENzAwOERDMTZFIC8qIE1h
cmtlZEpTVmFsdWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZB
cnJheS5oICovOyB9OwogCQlFM0Q4Nzc3NDFFNjVDMEEwMDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1w
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDg3
NzcyMUU2NUMwODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oICovOyB9OwogCQlFM0VFMTM3
NjIxRkJENDM1MDBEODNDNEIgLyogRXJyb3JUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VFMTM3NDIxRkJENDM0MDBEODNDNEIgLyogRXJyb3JU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RTNGMjE5MzcyNEM3ODgyRjAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjIxOTMxMjRDNzg4Mjkw
MDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yLmggKi87IH07CisJCUUzRjIxOTM4MjRDNzg4
MzEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyMTkyRjI0Qzc4ODI5MDAzQUU0
NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oICovOyB9OworCQlFM0YyMTkzOTI0
Qzc4ODM0MDAzQUU0NTMgLyogSW50bFNlZ21lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyMTkzMzI0Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNl
Z21lbnRzLmggKi87IH07CisJCUUzRjIxOTNBMjRDNzg4MzYwMDNBRTQ1MyAvKiBJbnRsU2VnbWVu
dHNQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRjIxOTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuaCAq
LzsgfTsKIAkJRTNGMjNBN0YxRUNGMTNFRTAwOTc4RDk5IC8qIFNuaXBwZXRTbG93UGF0aENhbGxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyM0E3
RTFFQ0YxM0U1MDA5NzhEOTkgLyogU25pcHBldFNsb3dQYXRoQ2FsbHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MDFFQ0YxM0Y1MDA5
NzhEOTkgLyogU25pcHBldFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNGMjNBN0QxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRSZWcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MTFF
Q0YxM0ZBMDA5NzhEOTkgLyogU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGMjNBN0MxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBw
ZXRQYXJhbXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMzIwNCw5ICszMjE5LDkgQEAKIAkJMEZFQzg1NjgxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
clRtcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJUbXAuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclRtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRUM4NTY5MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQWlyVG1wLmg7IHBhdGggPSBiMy9haXIvQWlyVG1wLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NTZBMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXBJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclRtcElubGluZXMu
aDsgcGF0aCA9IGIzL2Fpci9BaXJUbXBJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTBGRUM4NThGMkJEQUNEQzcwMDgwRkY3NCAvKiBBaXJUbXBXaWR0aElubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyVG1wV2lkdGhJbmxpbmVzLmg7IHBh
dGggPSBiMy9haXIvQWlyVG1wV2lkdGhJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGRUM4NTZCMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJWYWxpZGF0ZS5jcHA7IHBhdGggPSBi
My9haXIvQWlyVmFsaWRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVD
ODU2QzFCREFDREM3MDA4MEZGNzQgLyogQWlyVmFsaWRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQWlyVmFsaWRhdGUuaDsgcGF0aCA9IGIzL2Fpci9BaXJWYWxpZGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVDODU4RjJCREFDREM3MDA4MEZGNzQg
LyogQWlyVG1wV2lkdGhJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEFpclRtcFdpZHRoSW5saW5lcy5oOyBwYXRoID0gYjMvYWlyL0FpclRtcFdpZHRoSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODU5MjFCREIxRTEwMDA4MEZGNzQg
LyogQWlyR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEFpckdlbmVyYXRlZC5jcHA7IHBhdGggPSBiMy9haXIvQWlyR2VuZXJhdGVkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1QUQxQkRCNUNGMTAwODBGRjc0IC8qIHRlc3Ri
MyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdGIz
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkwRkVDODVBRTFCREI1RDVF
MDA4MEZGNzQgLyogdGVzdGIzXzEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gdGVzdGIzXzEuY3BwOyBwYXRoID0gYjMvdGVzdGIzXzEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzY0Niw5ICszNjYxLDkgQEAKIAkJNTM0MUZDNzExREFDMzQzQzAw
RTdFNEQ3IC8qIEIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oOyBwYXRoID0gYjMvQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ2Mzg3MDFF
NzBDRjNEMDBGMTJBQzEgLyogSlNSdW5Mb29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNSdW5Mb29wVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTM0NjM4NzIxRTcwRDAxNTAwRjEyQUMxIC8qIEpTUnVuTG9vcFRpbWVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUnVuTG9vcFRpbWVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAgICAgICAgICAgICAgICA1MzQ2Mzg3NDFFNzBEREVDMDBG
MTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGVmZXJyZWRXb3JrVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTM0NjM4NzQxRTcwRERFQzAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmVycmVkV29ya1RpbWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzNDYzODc2MUU3MUUwNkUwMEYxMkFDMSAvKiBEZWZlcnJlZFdv
cmtUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJl
ZFdvcmtUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgICAgICAg
ICAgNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0ODZCQkExQzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlwZWRB
cnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1R5cGVkQXJy
YXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ5MDI4MjFDNzI0MkM4MDAx
MkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFR5cGVkQXJyYXlDVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvVHlwZWRBcnJh
eUNUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODMxQzcyNDJD
ODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5NDksNiArNDk2NCwxMiBAQAog
CQlFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5j
cHA7IH07CiAJCUUzMDYwMTI4MjI4Rjk3ODEwMEZBQUJERiAvKiBVbmxpbmtlZE1ldGFkYXRhVGFi
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1v
ZHVsZUxvYWRlci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE1v
ZHVsZUxvYWRlci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3N0QyNEM3
ODI0NjAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTMwNzE3N0UyNEM3ODI0NjAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFNlZ21lbnRlclByb3RvdHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMDcxNzdGMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2Vn
bWVudGVyUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdtZW50ZXJQcm90b3R5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3ODAyNEM3ODI0NzAwREYwNjQ0
IC8qIEludGxTZWdtZW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFNlZ21lbnRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMDcxNzgxMjRDNzgyNDcwMERGMDY0
NCAvKiBJbnRsU2VnbWVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdtZW50ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3ODIyNEM3ODI0NzAwREYwNjQ0IC8qIElu
dGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVu
dGVyQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzExNzlB
OTIyODgzODVEMDA1MTRCMkMgLyogU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTMxNjE4MTAxRUM1RkUwODAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQW5ub3RhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzE2MTgxMTFFQzVGRTA4MDAwNkEyMTggLyogRE9NQXR0cmlidXRl
R2V0dGVyU2V0dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERP
TUF0dHJpYnV0ZUdldHRlclNldHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MDk1LDYgKzUxMTYsMTQgQEAKIAkJRTNEODc3NzIxRTY1QzA4OTAwQkU5NDVBIC8qIEJ5dGVj
b2RlRHVtcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlRHVt
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUUxMzc0MjFGQkQ0MzQwMEQ4
M0M0QiAvKiBFcnJvclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXJy
b3JUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUUxMzc1MjFGQkQ0MzQw
MEQ4M0M0QiAvKiBFcnJvclR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXJyb3JUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjE5
MkYyNEM3ODgyOTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFM0YyMTkzMDI0Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJ
dGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVudEl0ZXJhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjE5MzEyNEM3ODgyOTAwM0FFNDUzIC8q
IEludGxTZWdtZW50SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bFNlZ21lbnRJdGVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0YyMTkzMjI0Qzc4ODJBMDAzQUU0
NTMgLyogSW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxT
ZWdtZW50c1Byb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIx
OTMzMjRDNzg4MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bFNlZ21lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIxOTM0MjRDNzg4
MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFNl
Z21lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjE5MzUyNEM3ODgy
QTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzRjIxOTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bFNlZ21lbnRzUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRjIzQTdCMUVDRjEzRTUwMDk3OEQ5OSAvKiBTbmlw
cGV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNuaXBwZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGMjNBN0MxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBw
ZXRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU25pcHBldFBhcmFt
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyM0E3RDFFQ0YxM0U1MDA5NzhE
OTkgLyogU25pcHBldFJlZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbmlw
cGV0UmVnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjEzLDE3ICs3MjQyLDE1
IEBACiAJCQkJMTQ3MzQxRTkxREMyQ0YyNTAwQUEyOUJBIC8qIEV4ZWN1dGFibGVCYXNlLmNwcCAq
LywKIAkJCQkxNDczNDFDQjFEQzAyRDcyMDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuaCAqLywK
IAkJCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmgg
Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQ0ZBRDMzMjM3MkRBQTcwMDI5
MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgKi8sCisJCQkJQ0VDRkFEMzMyMzcyREFB
NzAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50LmNwcCAqLywKIAkJCQlDRUNGQUQzMjIz
NzJEQUE3MDAyOTE1OTkgLyogRmlsZUJhc2VkRnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRTIwQkQw
NDIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcCAqLywKIAkJ
CQlDRTIwQkQwMzIzN0QzQUQ0MDA0NkU1MjAgLyogRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmgg
Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzM0QwNzQ1MjJDMkQ4N0YwMDRE
MkZFMiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQk1MzNE
MDc0NTIyQzJEODdGMDA0RDJGRTIgLyogRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5j
cHAgKi8sCiAJCQkJNTMzRDA3NDMyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lz
dHJ5Q29uc3RydWN0b3IuaCAqLywKIAkJCQk1MzFFRTdCQzIyREU2RUM2MDAzMERBODEgLyogRmlu
YWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwICovLAogCQkJCTUzMUVFN0I5MjJERTZCQkIw
MDMwREE4MSAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZS5oICovLAogCQkJCUE3QThB
RjI5MTdBREI1RjMwMDVBQjE3NCAvKiBGbG9hdDMyQXJyYXkuaCAqLywKLQkJCQlBN0E4QUYyOTE3
QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggKi8sCi0JCQkJQTdBOEFGMkExN0FEQjVG
MzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oICovLAogCQkJCUE3QThBRjJBMTdBREI1RjMwMDVB
QjE3NCAvKiBGbG9hdDY0QXJyYXkuaCAqLywKIAkJCQlCQzI2ODBDMDBFMTZENEU5MDBBMDZFOTIg
LyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMyNjgwQzEwRTE2RDRFOTAwQTA2
RTkyIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKQEAgLTczMjgsNiArNzM1NSwyMCBAQAog
CQkJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuaCAqLywKIAkJCQlBM0JGODg0QjI0NDgwQkRFMDAxQjlGMzUgLyogSW50bFJlbGF0
aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5
RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLywKKwkJCQlFMzA3MTc4
MDI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlci5jcHAgKi8sCisJCQkJRTMwNzE3ODEy
NEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIuaCAqLywKKwkJCQlFMzA3MTc4MjI0Qzc4
MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlFMzA3
MTc3RDI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmggKi8sCisJ
CQkJRTMwNzE3N0UyNEM3ODI0NjAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5cGUuY3Bw
ICovLAorCQkJCUUzMDcxNzdGMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyUHJvdG90
eXBlLmggKi8sCisJCQkJRTNGMjE5MzAyNEM3ODgyOTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRl
cmF0b3IuY3BwICovLAorCQkJCUUzRjIxOTMxMjRDNzg4MjkwMDNBRTQ1MyAvKiBJbnRsU2VnbWVu
dEl0ZXJhdG9yLmggKi8sCisJCQkJRTNGMjE5MzUyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdt
ZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCUUzRjIxOTJGMjRDNzg4MjkwMDNBRTQ1
MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmggKi8sCisJCQkJRTNGMjE5MzQyNEM3
ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5jcHAgKi8sCisJCQkJRTNGMjE5MzMyNEM3ODgy
QTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oICovLAorCQkJCUUzRjIxOTMyMjRDNzg4MkEwMDNB
RTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwICovLAorCQkJCUUzRjIxOTM2MjRDNzg4
MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuaCAqLywKIAkJCQkwRjI3NUYyQzFF
Q0UwNzk2MDA2MjBENDcgLyogSW50cmluc2ljLmNwcCAqLywKIAkJCQk4NkJGNjQyQTE0OERCMkI1
MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8sCiAJCQkJOEI5RjZENTUxRDU5MTJGQTAwMUM3MzlG
IC8qIEl0ZXJhdGlvbktpbmQuaCAqLywKQEAgLTczODYsMTMgKzc0MjcsOSBAQAogCQkJCTBGN0RG
MTM5MUUyOTcxMEUwMDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5j
cHAgKi8sCiAJCQkJMEY3REYxM0ExRTI5NzEwRTAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmggKi8sCiAJCQkJQTdCNEFDQUUxNDg0QzlDRTAwQjM4QTM2IC8qIEpT
RXhwb3J0TWFjcm9zLmggKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzMDA3
NDBDMjJERDZGNjYwMEI5QUNCMyAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmNwcCAqLywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMzRDA3NDYyMkMyRDlEMTAwNEQyRkUyIC8q
IEpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNzk4OTM3NzYxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgKi8sCi0J
CQkJNzk4OTM3NzYxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgKi8sCi0JCQkJ
Nzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovLAotCQkJCTc5ODkz
Nzc3MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuaCAqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMEYyQjY2QzExN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFy
cmF5LmggKi8sCisJCQkJNTMwMDc0MEMyMkRENkY2NjAwQjlBQ0IzIC8qIEpTRmluYWxpemF0aW9u
UmVnaXN0cnkuY3BwICovLAorCQkJCTUzM0QwNzQ2MjJDMkQ5RDEwMDREMkZFMiAvKiBKU0ZpbmFs
aXphdGlvblJlZ2lzdHJ5LmggKi8sCisJCQkJMEYyQjY2QzExN0I2QjVBQjAwQTdBRTNGIC8qIEpT
RmxvYXQzMkFycmF5LmggKi8sCiAJCQkJMEYyQjY2QzIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxv
YXQ2NEFycmF5LmggKi8sCiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rp
b24uY3BwICovLAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmgg
Ki8sCkBAIC03NTkxLDcgKzc2MjgsNyBAQAogCQkJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAv
KiBQcml2YXRlTmFtZS5oICovLAogCQkJCTE0NzM0MURGMURDMkNFOTYwMEFBMjlCQSAvKiBQcm9n
cmFtRXhlY3V0YWJsZS5jcHAgKi8sCiAJCQkJMTQ3MzQxRDMxREMwMkU2RDAwQUEyOUJBIC8qIFBy
b2dyYW1FeGVjdXRhYmxlLmggKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEE3
RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAorCQkJ
CUE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuY3BwICovLAog
CQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCAqLywK
IAkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCAq
LywKIAkJCQk4NjE1OEFCMjE1NUM4QjNGMDBCNDVDOUMgLyogUHJvcGVydHlOYW1lLmggKi8sCkBA
IC05NTcyLDExICs5NjA5LDExIEBACiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4
cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNjdDRjgyMjQ5MzE2QjEw
MDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUMz
QzU3MUYzM0E0NTMwMEY1OUI2QyAvKiBGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQ0ZBRDM3
MjM3MkRBRDQwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0VDRkFEMzcyMzcyREFENDAwMjkxNTk5IC8qIEZpbGVCYXNlZEZ1enplckFnZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTIwQkQwNTIzN0QzRTIzMDA0NkU1MjAgLyogRmlsZUJhc2Vk
RnV6emVyQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNTMzRDA3NDQyMkMyRDc5NzAwNEQyRkUyIC8qIEZpbmFsaXphdGlvblJlZ2lzdHJ5
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzM0QwNzQ0MjJDMkQ3OTcwMDREMkZF
MiAvKiBGaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MzFFRTdCQTIyREU2QkJCMDAzMERBODEgLyogRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBN0E4
QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBN0E4QUYzODE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0E4QUYzOTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjI0RTU0MzE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTM0RURCRjcxREI1RkZDOTAwREM4N0E1IC8qIEZyYW1lVHJhY2Vycy5o
IGluIEhlYWRlcnMgKi8sCkBAIC05ODAzLDYgKzk4NDAsOSBAQAogCQkJCUUzNjVGMzNBMjRBQTYy
MzkwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzUzQzEyMTI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lc1By
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIyIC8q
IEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3
MTc4RTI0Qzc4MjlEMDBERjA2NDQgLyogSW50bExvY2FsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTMwNzE3OEQyNEM3ODI5QTAwREYwNjQ0IC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTMwNzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxMb2NhbGVQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3OTJGRjFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODEwLDYgKzk4NTAsMTkgQEAKIAkJCQlBMTI1ODQ2
RjFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExMkJCRkYyMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MDhFQkUyNDFDRThGMzU4MDA0NTMxNDYgLyogSW50bE9iamVj
dElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzhCMjRDNzgyOEYwMERGMDY0NCAv
KiBJbnRsUGx1cmFsUnVsZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzhBMjRDNzgyOEMw
MERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTMwNzE3ODkyNEM3ODI4NjAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3ODMyNEM3ODI3MTAwREYwNjQ0IC8qIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzg0MjRDNzgyNzcwMERG
MDY0NCAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzMDcxNzg1MjRDNzgyNzkwMERGMDY0NCAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4NzI0Qzc4MjdFMDBERjA2NDQg
LyogSW50bFNlZ21lbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3ODYyNEM3ODI3QzAw
REYwNjQ0IC8qIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTMwNzE3ODgyNEM3ODI4MTAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzRjIxOTM3MjRDNzg4MkYwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0YyMTkzODI0Qzc4ODMxMDAzQUU0NTMgLyog
SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNGMjE5
MzkyNEM3ODgzNDAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTNGMjE5M0EyNEM3ODgzNjAwM0FFNDUzIC8qIEludGxTZWdtZW50c1Byb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTM0RTAzNTQxRTUzQkQyOTAwMjEzRjY0IC8qIEludHJpbnNpY0dl
dHRlckFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENFMTMyMUZCMTFEQTQwMDZG
MzkwMSAvKiBJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTk5
MTAsOCArOTk2Myw4IEBACiAJCQkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFy
Vk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4
cG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpT
RXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTMzRDA3NDcyMkMyRDlEMjAwNEQyRkUyIC8qIEpTRmluYWxpemF0aW9uUmVnaXN0cnku
aCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwRjJCNjZF
RjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUzM0QwNzQ3MjJDMkQ5RDIwMDREMkZFMiAvKiBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJy
YXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYwMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zs
b2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUYwRTE2RjVDRDAwQjM0NDYw
IC8qIEpTRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAyOEJBMTc5NzYwM0QwMDk4
MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIwMSw3ICsx
MDI1NCw3IEBACiAJCQkJREM2MDVCNjAxQ0UyNkVBNzAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTExMDFEQ0E5Mjk0MDAxNEY5RkUgLyogUHJvZ3JhbUNv
ZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3MzQxRDQxREMwMkU2RDAwQUEyOUJBIC8q
IFByb2dyYW1FeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFFIC8qIFByb3BlcnR5Q29uZGl0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkQzRTQwRTFCNjE4QjY2MDBDODBFMUUgLyogUHJvcGVy
dHlDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RkI2MTAwMTA0MEMzOEIwMDE3QTI4
NiAvKiBQcm9wZXJ0eURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTU0MzdEMEVC
QTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODYxNThBQjMxNTVDOEI0MDAwQjQ1QzlDIC8qIFByb3BlcnR5TmFtZS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYTg5NDYzZmNhODM5NjM4NGVmMGE4
ZmQ4MTU1Y2ExZWM1YjAyMTVkNS4uOWMwMTcxZDEwZWE3NGFjMGRkYjZhOWMzZDlkMGQ1NDc5Y2Ix
YWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODMyLDYgKzgzMiwxMyBAQCBy
dW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdC5jcHAKIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcAogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorcnVudGlt
ZS9JbnRsU2VnbWVudEl0ZXJhdG9yLmNwcAorcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJv
dG90eXBlLmNwcAorcnVudGltZS9JbnRsU2VnbWVudGVyLmNwcAorcnVudGltZS9JbnRsU2VnbWVu
dGVyQ29uc3RydWN0b3IuY3BwCitydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCity
dW50aW1lL0ludGxTZWdtZW50cy5jcHAKK3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmNw
cAogcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCiBydW50aW1lL0l0ZXJhdG9yUHJvdG90
eXBlLmNwcAogcnVudGltZS9KU0FycmF5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNTBlNjBmMTQxMzU1NGIwNTFkZGZl
NDgxNzUwNjY5NTU0YWRlZTExMi4uMGM0OGY2ZmMzMTViNTZiYmNmMmU2YThmMjgxOWVlMzhlM2E2
YWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCkBAIC01NCw2ICs1NCw3IEBACiAgICAgbWFjcm8oUmVnRXhwKSBcCiAgICAgbWFj
cm8oUmVsYXRpdmVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oUmVtb3RlUGxheWJhY2spIFwKKyAg
ICBtYWNybyhTZWdtZW50ZXIpIFwKICAgICBtYWNybyhTZXQpIFwKICAgICBtYWNybyhTaGFyZWRB
cnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKFN0cmluZykgXApAQCAtMTE5LDYgKzEyMCw3IEBACiAg
ICAgbWFjcm8oZ2V0KSBcCiAgICAgbWFjcm8oZ2xvYmFsKSBcCiAgICAgbWFjcm8oZ28pIFwKKyAg
ICBtYWNybyhncmFudWxhcml0eSkgXAogICAgIG1hY3JvKGdyb3VwcykgXAogICAgIG1hY3JvKGhh
cykgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5KSBcCkBAIC0xMzksNiArMTQxLDcgQEAKICAg
ICBtYWNybyhpc1Byb3RvdHlwZU9mKSBcCiAgICAgbWFjcm8oaXNWaWV3KSBcCiAgICAgbWFjcm8o
aXNXYXRjaHBvaW50KSBcCisgICAgbWFjcm8oaXNXb3JkTGlrZSkgXAogICAgIG1hY3JvKGpldHRp
c29uUmVhc29uKSBcCiAgICAgbWFjcm8oam9pbikgXAogICAgIG1hY3JvKGxhbmd1YWdlKSBcCkBA
IC0xNzYsNiArMTc5LDcgQEAKICAgICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8oc2NyaXB0
KSBcCiAgICAgbWFjcm8oc2Vjb25kKSBcCisgICAgbWFjcm8oc2VnbWVudCkgXAogICAgIG1hY3Jv
KHNlbnNpdGl2aXR5KSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCBiMmQ1Y2I4
NGM4MzJjNjJlNmM0NWYwZmNkNGY3ZmQ4ODQ4MDZhYmRjLi45MTlmYjYyZjFlODQ5YjJjNzM3OWZl
NDZlZDQ2MTk0NWU4Yjg4MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcApAQCAtNDgsOCArNDgsMTIgQEAKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5o
PgogI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWZpZWxkcG9z
aXRlci5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgpAQCAtMTE2LDYgKzEyMCwxMyBAQCBz
dGF0aWMgSlNWYWx1ZSBjcmVhdGVSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0s
IEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJv
dG90eXBlKCkpLCBqc0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSo+KGdsb2Jh
bE9iamVjdC0+cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9i
amVjdCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZVNlZ21lbnRlckNvbnN0cnVjdG9y
KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0
ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBJbnRs
U2VnbWVudGVyQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blByb3RvdHlwZSgpKSwganNDYXN0PEludGxTZWdtZW50ZXJQcm90b3R5cGUqPihnbG9iYWxPYmpl
Y3QtPnNlZ21lbnRlclN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworfQor
CiB9CiAKICNpbmNsdWRlICJJbnRsT2JqZWN0Lmx1dC5oIgpAQCAtMTY5LDYgKzE4MCw4IEBAIHZv
aWQgSW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik7CiAj
ZW5kaWYKKyAgICBpZiAoT3B0aW9uczo6dXNlSW50bFNlZ21lbnRlcigpKQorICAgICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+U2VnbWVudGVyLCBj
cmVhdGVTZWdtZW50ZXJDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogU3RydWN0dXJlKiBJbnRsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTI4MSw2ICsyOTQsMjcgQEAgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCkKICAgICByZXR1cm4gYXZhaWxh
YmxlTG9jYWxlczsKIH0KIAorY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsU2VnbWVudGVyQXZh
aWxhYmxlTG9jYWxlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3Ry
aW5nPj4gY2FjaGVkQXZhaWxhYmxlTG9jYWxlczsKKyAgICBIYXNoU2V0PFN0cmluZz4mIGF2YWls
YWJsZUxvY2FsZXMgPSBjYWNoZWRBdmFpbGFibGVMb2NhbGVzLmdldCgpOworCisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRp
YWxpemVPbmNlLCBbJl0geworICAgICAgICBBU1NFUlQoYXZhaWxhYmxlTG9jYWxlcy5pc0VtcHR5
KCkpOworICAgICAgICBjb25zdGV4cHIgYm9vbCBpc0ltbW9ydGFsID0gdHJ1ZTsKKyAgICAgICAg
aW50MzJfdCBjb3VudCA9IHVicmtfY291bnRBdmFpbGFibGUoKTsKKyAgICAgICAgZm9yIChpbnQz
Ml90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIGxvY2FsZSA9
IGxhbmd1YWdlVGFnRm9yTG9jYWxlSUQodWJya19nZXRBdmFpbGFibGUoaSksIGlzSW1tb3J0YWwp
OworICAgICAgICAgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZChsb2NhbGUpOworICAgICAg
ICAgICAgYWRkU2NyaXB0bGVzc0xvY2FsZUlmTmVlZGVkKGF2YWlsYWJsZUxvY2FsZXMsIGxvY2Fs
ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxlczsKK30K
KwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1nZXRvcHRpb24KIFRyaVN0YXRlIGlu
dGxCb29sZWFuT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0
aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IDBiMGE3YmI2YmE0MWMxZWYyOTFhMjgyMjNiODUwMzgx
ODdmNzY4ZDYuLjVlZDRkMTVlNjA0NmYwMWNlYjJiNTcyOWFiZjAyZjg2MDUxZTcxZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTgxLDYgKzgxLDcg
QEAgY2xhc3MgSW50bE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIFN0
cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0Kik7CiBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCk7CiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxD
b2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFNl
Z21lbnRlckF2YWlsYWJsZUxvY2FsZXMoKTsKIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxh
YmxlTG9jYWxlcygpOyB9CiBpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGlzcGxh
eU5hbWVzQXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7
IH0KIGlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFi
bGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZTVjNmYwZDc5YmMyZWJkYjQ5MWI3MWM5M2QxYmI4OGZlMzdjZGRmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJ
dGVyYXRvci5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisKKyNpbmNsdWRlICJJdGVy
YXRvck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VjdXJyLmg+CisjaW5jbHVkZSA8
dW5pY29kZS91bG9jLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudEl0ZXJhdG9y
OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEludGxTZWdtZW50SXRlcmF0b3IpIH07CisKK0ludGxTZWdtZW50
SXRlcmF0b3IqIEludGxTZWdtZW50SXRlcmF0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9y
RGVsZXRlcj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiBidWZmZXIsIEpTU3RyaW5n
KiBzdHJpbmcsIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQoreworICAg
IGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50SXRl
cmF0b3I+KHZtLmhlYXApKSBJbnRsU2VnbWVudEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoc2VnbWVudGVyKSwgV1RGTW92ZShidWZmZXIpLCBncmFudWxhcml0eSk7CisgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5nKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitT
dHJ1Y3R1cmUqIEludGxTZWdtZW50SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bFNlZ21l
bnRJdGVyYXRvcjo6SW50bFNlZ21lbnRJdGVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRl
cj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSW50bFNlZ21lbnRl
cjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisg
ICAgLCBtX3NlZ21lbnRlcihXVEZNb3ZlKHNlZ21lbnRlcikpCisgICAgLCBtX2J1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpCisgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQoreworfQorCit2
b2lkIEludGxTZWdtZW50SXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNTdHJpbmcq
IHN0cmluZykKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBtX3N0cmluZy5zZXQodm0sIHRoaXMsIHN0cmluZyk7
Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SW50bFNlZ21lbnRJdGVyYXRvcio+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9z
dHJpbmcpOworfQorCitKU09iamVjdCogSW50bFNlZ21lbnRJdGVyYXRvcjo6bmV4dChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpbnQz
Ml90IHN0YXJ0SW5kZXggPSB1YnJrX2N1cnJlbnQobV9zZWdtZW50ZXIuZ2V0KCkpOworICAgIGlu
dDMyX3QgZW5kSW5kZXggPSB1YnJrX25leHQobV9zZWdtZW50ZXIuZ2V0KCkpOworICAgIGlmIChl
bmRJbmRleCA9PSBVQlJLX0RPTkUpCisgICAgICAgIHJldHVybiBjcmVhdGVJdGVyYXRvclJlc3Vs
dE9iamVjdChnbG9iYWxPYmplY3QsIGpzVW5kZWZpbmVkKCksIHRydWUpOworICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBJbnRsU2VnbWVudGVyOjpjcmVhdGVTZWdtZW50RGF0YU9iamVjdChnbG9iYWxP
YmplY3QsIG1fc3RyaW5nLmdldCgpLCBzdGFydEluZGV4LCBlbmRJbmRleCwgKm1fc2VnbWVudGVy
LCBtX2dyYW51bGFyaXR5KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgIHJldHVybiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdChnbG9iYWxPYmplY3QsIG9iamVj
dCwgZmFsc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGI5
NjAzYjI2ODgyZDI3ZGFiZTYyMDNhYzA3NzczNWMzNTc0MzYxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5oCkBAIC0w
LDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGxT
ZWdtZW50ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxTZWdtZW50SXRlcmF0
b3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCog
Y2VsbCkKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PEludGxTZWdtZW50SXRlcmF0b3IqPihj
ZWxsKS0+SW50bFNlZ21lbnRJdGVyYXRvcjo6fkludGxTZWdtZW50SXRlcmF0b3IoKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4K
KyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB2bS5pbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2U8bW9kZT4oKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgSW50bFNlZ21lbnRJdGVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
c3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+JiYs
IEJveDxWZWN0b3I8VUNoYXI+PiwgSlNTdHJpbmcqLCBJbnRsU2VnbWVudGVyOjpHcmFudWxhcml0
eSk7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTT2JqZWN0KiBu
ZXh0KEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3ByaXZhdGU6CisgICAgSW50bFNlZ21lbnRJdGVyYXRv
cihWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFr
SXRlcmF0b3JEZWxldGVyPiYmLCBCb3g8VmVjdG9yPFVDaGFyPj4mJiwgSW50bFNlZ21lbnRlcjo6
R3JhbnVsYXJpdHkpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1N0cmluZyopOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0
ZXI+IG1fc2VnbWVudGVyOworICAgIEJveDxWZWN0b3I8VUNoYXI+PiBtX2J1ZmZlcjsKKyAgICBX
cml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fc3RyaW5nOworICAgIEludGxTZWdtZW50ZXI6OkdyYW51
bGFyaXR5IG1fZ3JhbnVsYXJpdHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwMDljOTJmNTM1OTljYzdkODFkMGFjZDdk
NTMwNmE3ZmQ2MWNjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsODcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJ
dGVyYXRvclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGVGdW5j
TmV4dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRs
U2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNl
Z21lbnQgU3RyaW5nIEl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJnNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxTZWdtZW50SXRl
cmF0b3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZS5sdXQuaAorQGJlZ2luIHNlZ21lbnRJdGVyYXRvclByb3RvdHlwZVRhYmxlCisgIG5l
eHQgICAgICAgICAgICAgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0ICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZSogSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkp
IEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJl
KiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxTZWdt
ZW50SXRlcmF0b3JQcm90b3R5cGU6OkludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30K
Kwordm9pZCBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9O
KCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLXNlZ21lbnRlci8jc2Vj
LSVzZWdtZW50aXRlcmF0b3Jwcm90b3R5cGUlLm5leHQKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBzZWdtZW50SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdt
ZW50SXRlcmF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFzZWdt
ZW50SXRlcmF0b3IpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLlNlZ21lbnRJdGVyYXRvci5wcm90b3R5cGUubmV4dCBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50SXRlcmF0
b3IiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
c2VnbWVudEl0ZXJhdG9yLT5uZXh0KGdsb2JhbE9iamVjdCkpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudEl0ZXJhdG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUzY2IyMjVlMmE4ZTAw
ZjFlNTE3MjAyYTUzYzgxMTJhY2U5ZjBjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFNlZ21lbnRJdGVyYXRvclByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworcHJpdmF0ZToKKyAgICBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKFZNJiwgU3RydWN0
dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjViMWE5YjgwMTNjNWVhN2JmYzIxMmQ2OWU4ZGUzNzA1ZWRkNzg2ZjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudGVyLmNwcApAQCAtMCwwICsxLDE4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgiCisKKyNpbmNsdWRlICJJbnRsT2JqZWN0
SW5saW5lcy5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50cy5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIEludGxTZWdtZW50ZXI6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFNl
Z21lbnRlcikgfTsKKworSW50bFNlZ21lbnRlciogSW50bFNlZ21lbnRlcjo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRlcj4odm0uaGVhcCkpIEludGxTZWdtZW50ZXIo
dm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0
dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsU2VnbWVudGVyOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK0ludGxTZWdtZW50ZXI6OkludGxTZWdtZW50ZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsU2VnbWVu
dGVyOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLXNlZ21lbnRlci8jc2VjLWludGwuc2VnbWVudGVyCit2b2lk
IEludGxTZWdtZW50ZXI6OmluaXRpYWxpemVTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgYXV0byByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXpl
TG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGxvY2FsZXMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU09iamVjdCogb3B0aW9uczsKKyAgICBpZiAob3B0
aW9uc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkp
OworICAgIGVsc2UgeworICAgICAgICBvcHRpb25zID0gb3B0aW9uc1ZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgfQorCisgICAgUmVzb2x2ZUxvY2FsZU9wdGlvbnMgbG9jYWxlT3B0aW9uczsKKworICAg
IExvY2FsZU1hdGNoZXIgbG9jYWxlTWF0Y2hlciA9IGludGxPcHRpb248TG9jYWxlTWF0Y2hlcj4o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7
IHsgImxvb2t1cCJfcywgTG9jYWxlTWF0Y2hlcjo6TG9va3VwIH0sIHsgImJlc3QgZml0Il9zLCBM
b2NhbGVNYXRjaGVyOjpCZXN0Rml0IH0gfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIg
XCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiX3MsIExvY2FsZU1hdGNoZXI6OkJlc3RGaXQpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBhdXRvIGxvY2Fs
ZURhdGEgPSBbXShjb25zdCBTdHJpbmcmLCBSZWxldmFudEV4dGVuc2lvbktleSkgLT4gVmVjdG9y
PFN0cmluZz4geworICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBhdXRvJiBhdmFp
bGFibGVMb2NhbGVzID0gaW50bFNlZ21lbnRlckF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBhdXRv
IHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMs
IHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU1hdGNoZXIsIGxvY2FsZU9wdGlvbnMsIHsgfSwgbG9j
YWxlRGF0YSk7CisKKyAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmxvY2FsZTsKKyAgICBpZiAobV9s
b2NhbGUuaXNFbXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50ZXIgZHVlIHRvIGludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZ3JhbnVsYXJpdHkgPSBp
bnRsT3B0aW9uPEdyYW51bGFyaXR5PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPmdyYW51bGFyaXR5LCB7IHsgImdyYXBoZW1lIl9zLCBHcmFudWxhcml0eTo6R3JhcGhl
bWUgfSwgeyAid29yZCJfcywgR3JhbnVsYXJpdHk6OldvcmQgfSwgeyAic2VudGVuY2UiX3MsIEdy
YW51bGFyaXR5OjpTZW50ZW5jZSB9IH0sICJncmFudWxhcml0eSBtdXN0IGJlIGVpdGhlciBcImdy
YXBoZW1lXCIsIFwid29yZFwiLCBvciBcInNlbnRlbmNlXCIiX3MsIEdyYW51bGFyaXR5OjpHcmFw
aGVtZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIFVC
cmVha0l0ZXJhdG9yVHlwZSB0eXBlID0gVUJSS19DSEFSQUNURVI7CisgICAgc3dpdGNoIChtX2dy
YW51bGFyaXR5KSB7CisgICAgY2FzZSBHcmFudWxhcml0eTo6R3JhcGhlbWU6CisgICAgICAgIHR5
cGUgPSBVQlJLX0NIQVJBQ1RFUjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFudWxhcml0
eTo6V29yZDoKKyAgICAgICAgdHlwZSA9IFVCUktfV09SRDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBHcmFudWxhcml0eTo6U2VudGVuY2U6CisgICAgICAgIHR5cGUgPSBVQlJLX1NFTlRFTkNF
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICBtX3NlZ21lbnRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRv
ciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPih1YnJrX29wZW4odHlwZSwgbV9sb2NhbGUudXRmOCgp
LmRhdGEoKSwgbnVsbHB0ciwgMCwgJnN0YXR1cykpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgU2VnbWVudGVyIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30K
KworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtaW50bC5z
ZWdtZW50ZXIucHJvdG90eXBlLnNlZ21lbnQKK0pTVmFsdWUgSW50bFNlZ21lbnRlcjo6c2VnbWVu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHN0cmluZ1ZhbHVlKSBjb25z
dAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1N0cmluZyoganNTdHJpbmcgPSBzdHJp
bmdWYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgU3RyaW5nIHN0cmluZyA9IGpzU3RyaW5nLT52YWx1ZShnbG9iYWxP
YmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgYXV0byB1
cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBCb3g8VmVjdG9yPFVDaGFyPj46OmNyZWF0ZShzdHJpbmcu
Y2hhcmFjdGVyc1dpdGhvdXROdWxsVGVybWluYXRpb24oKSk7CisKKyAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIHNlZ21lbnRlciA9IHN0ZDo6dW5pcXVlX3B0
cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPih1YnJrX3NhZmVDbG9uZSht
X3NlZ21lbnRlci5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgJnN0YXR1cykpOworICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudHMiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKyAgICB1YnJrX3NldFRleHQoc2VnbWVudGVyLmdldCgpLCB1cGNvbnZl
cnRlZENoYXJhY3RlcnMtPmRhdGEoKSwgdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLT5zaXplKCksICZz
dGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudHMi
X3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBJbnRsU2VnbWVu
dHM6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5zZWdtZW50c1N0cnVjdHVyZSgpLCBXVEZNb3Zl
KHNlZ21lbnRlciksIFdURk1vdmUodXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKSwganNTdHJpbmcsIG1f
Z3JhbnVsYXJpdHkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1zZWdt
ZW50ZXIvI3NlYy1pbnRsLnNlZ21lbnRlci5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCitKU09i
amVjdCogSW50bFNlZ21lbnRlcjo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IEpTT2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNT
dHJpbmcodm0sIG1fbG9jYWxlKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5ncmFudWxhcml0eSwganNOb250cml2aWFsU3RyaW5nKHZtLCBncmFudWxhcml0
eVN0cmluZyhtX2dyYW51bGFyaXR5KSkpOworICAgIHJldHVybiBvcHRpb25zOworfQorCitBU0NJ
SUxpdGVyYWwgSW50bFNlZ21lbnRlcjo6Z3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHkpCit7CisgICAgc3dpdGNoIChncmFudWxhcml0eSkgeworICAgIGNhc2UgR3JhbnVs
YXJpdHk6OkdyYXBoZW1lOgorICAgICAgICByZXR1cm4gImdyYXBoZW1lIl9zOworICAgIGNhc2Ug
R3JhbnVsYXJpdHk6OldvcmQ6CisgICAgICAgIHJldHVybiAid29yZCJfczsKKyAgICBjYXNlIEdy
YW51bGFyaXR5OjpTZW50ZW5jZToKKyAgICAgICAgcmV0dXJuICJzZW50ZW5jZSJfczsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVs
bCgpOworfQorCitKU09iamVjdCogSW50bFNlZ21lbnRlcjo6Y3JlYXRlU2VnbWVudERhdGFPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZywgaW50MzJf
dCBzdGFydEluZGV4LCBpbnQzMl90IGVuZEluZGV4LCBVQnJlYWtJdGVyYXRvciYgc2VnbWVudGVy
LCBHcmFudWxhcml0eSBncmFudWxhcml0eSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnNl
Z21lbnQsIGpzU3Vic3RyaW5nKGdsb2JhbE9iamVjdCwgc3RyaW5nLCBzdGFydEluZGV4LCBlbmRJ
bmRleCAtIHN0YXJ0SW5kZXgpKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+aW5kZXgsIGpzTnVtYmVyKHN0YXJ0SW5kZXgpKTsKKyAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aW5wdXQsIHN0cmluZyk7CisgICAgaWYgKGdyYW51
bGFyaXR5ID09IEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5OjpXb3JkKSB7CisgICAgICAgIGlu
dDMyX3QgcnVsZVN0YXR1cyA9IHVicmtfZ2V0UnVsZVN0YXR1cygmc2VnbWVudGVyKTsKKyAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzV29yZExpa2UsIGpz
Qm9vbGVhbighKHJ1bGVTdGF0dXMgPj0gVUJSS19XT1JEX05PTkUgJiYgcnVsZVN0YXR1cyA8PSBV
QlJLX1dPUkRfTk9ORV9MSU1JVCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzV29yZExpa2UsIGpzVW5kZWZpbmVkKCkpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMGY0MjZj
NDg5NzU2YWFkNDk3MWU2OWM2ODExOWEzZjcwZTBmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmgKQEAgLTAsMCArMSw3OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgor
I2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VI
ZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit1c2luZyBVQnJlYWtJdGVyYXRvckRlbGV0
ZXIgPSBJQ1VEZWxldGVyPHVicmtfY2xvc2U+OworCitjbGFzcyBJbnRsU2VnbWVudGVyIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U05vbkZpbmFsT2JqZWN0OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisg
ICAgeworICAgICAgICBzdGF0aWNfY2FzdDxJbnRsU2VnbWVudGVyKj4oY2VsbCktPkludGxTZWdt
ZW50ZXI6On5JbnRsU2VnbWVudGVyKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bFNlZ21lbnRl
clNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgZW51bSBjbGFzcyBHcmFudWxhcml0eSA6IHVp
bnQ4X3QgeyBHcmFwaGVtZSwgV29yZCwgU2VudGVuY2UgfTsKKworICAgIHN0YXRpYyBJbnRsU2Vn
bWVudGVyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgdm9pZCBpbml0aWFsaXplU2VnbWVudGVyKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBsb2NhbGVzVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKTsKKworICAgIEpT
VmFsdWUgc2VnbWVudChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpIGNvbnN0OworICAgIEpTT2Jq
ZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAgIHN0YXRp
YyBKU09iamVjdCogY3JlYXRlU2VnbWVudERhdGFPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU1N0
cmluZyosIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJyZWFrSXRlcmF0
b3ImLCBHcmFudWxhcml0eSk7CisKK3ByaXZhdGU6CisgICAgSW50bFNlZ21lbnRlcihWTSYsIFN0
cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWwgZ3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkpOworCisgICAgc3RkOjp1
bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVu
dGVyOworICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5
IHsgR3JhbnVsYXJpdHk6OkdyYXBoZW1lIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVy
Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNGQ5YmU5MTFlMGZlNDEyNzdhNjliNzcwOWFj
NTNiOWViZmZjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25z
dHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxT
ZWdtZW50ZXJQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25zdHJ1
Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2Vn
bWVudGVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
JnNlZ21lbnRlckNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50
ZXJDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHNlZ21lbnRlckNvbnN0cnVjdG9yVGFibGUKKyAg
c3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvclN1
cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisq
LworCitJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IqIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxTZWdtZW50ZXJQcm90b3R5
cGUqIHNlZ21lbnRlclByb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24odm0sIHNlZ21lbnRlclByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxTZWdtZW50ZXIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpJ
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEludGxTZWdtZW50ZXIsIGNvbnN0cnVjdEludGxT
ZWdtZW50ZXIpCit7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNlZ21lbnRlclByb3RvdHlw
ZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIlNlZ21lbnRlciJfcywgTmFtZUFk
ZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNlZ21lbnRl
clByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOworICAgIHNlZ21lbnRlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKKy8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5TZWdtZW50ZXIKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1Rh
cmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5ld1RhcmdldCA9PSBjYWxsRnJh
bWUtPmpzQ2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmplY3QtPnNlZ21lbnRlclN0cnVjdHVy
ZSgpCisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5ld1RhcmdldCkt
PnNlZ21lbnRlclN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgSW50bFNlZ21lbnRlciogc2VnbWVudGVyID0gSW50bFNlZ21lbnRlcjo6Y3Jl
YXRlKHZtLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChzZWdtZW50ZXIpOworCisgICAgc2NvcGUu
cmVsZWFzZSgpOworICAgIHNlZ21lbnRlci0+aW5pdGlhbGl6ZVNlZ21lbnRlcihnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyKTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL2VjbWE0MDIvI3NlYy1JbnRsLlNlZ21lbnRlcgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTZWdtZW50ZXIiKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxl
c09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWlu
dGwtc2VnbWVudGVyLyNzZWMtaW50bC5zZWdtZW50ZXIuc3VwcG9ydGVkbG9jYWxlc29mCisKKyAg
ICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlU2VnbWVudGVyJS5bW2F2YWlsYWJsZUxv
Y2FsZXNdXS4KKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBp
bnRsU2VnbWVudGVyQXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgLy8gMi4gTGV0IHJlcXVlc3Rl
ZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICBWZWN0b3I8
U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExv
Y2FsZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxl
cyhnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkpKSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1
Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhkYmIxZjNhMWY3YjVkNmFlMmVlMDcxMjdiNTVkYTc5MDNlMzBl
YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
U2VnbWVudGVyQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFNlZ21lbnRlclByb3Rv
dHlwZTsKKworY2xhc3MgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0
aW9uOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMg
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsU2Vn
bWVudGVyUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKwor
cHJpdmF0ZToKKyAgICBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bFNlZ21lbnRlclByb3RvdHlwZSopOwor
fTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxTZWdtZW50ZXJDb25z
dHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90
eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YmJjMzQyYjgwMjliYmFjYTUzMWM2OWY0ZDY4OWU0OTM4ZWVj
YmEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFNlZ21lbnRlclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5oIgor
CisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxTZWdtZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRlclBy
b3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
KworfQorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJJbnRsLlNlZ21lbnRlciIsICZCYXNlOjpzX2luZm8sICZzZWdtZW50ZXJQcm90b3R5
cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsU2VnbWVudGVyUHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50ZXJQcm90b3R5cGUubHV0LmgKK0Bi
ZWdpbiBzZWdtZW50ZXJQcm90b3R5cGVUYWJsZQorICBzZWdtZW50ICAgICAgICAgIEludGxTZWdt
ZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgcmVzb2x2ZWRPcHRpb25zICBJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyAgICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsU2VnbWVudGVyUHJv
dG90eXBlKiBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbnRsU2VnbWVudGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFNlZ21lbnRlclByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50ZXJQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworSW50bFNlZ21lbnRlclByb3RvdHlwZTo6SW50bFNlZ21lbnRlclBy
b3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQoreworfQorCit2b2lkIEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RS
QU5TSVRJT04oKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVu
dGVyLyNzZWMtaW50bC5zZWdtZW50ZXIucHJvdG90eXBlLnNlZ21lbnQKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRlclByb3RvdHlwZUZ1bmNTZWdtZW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBhdXRvKiBzZWdtZW50ZXIgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdt
ZW50ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFzZWdtZW50ZXIp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJ
bnRsLlNlZ21lbnRlci5wcm90b3R5cGUuc2VnbWVudCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50ZXIiX3MpOworCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5zZWdtZW50KGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtSW50bC5TZWdtZW50ZXIucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsU2Vn
bWVudGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogc2VnbWVudGVyID0ganNEeW5hbWljQ2FzdDxJbnRsU2VnbWVudGVyKj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghc2VnbWVudGVyKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5TZWdtZW50ZXIu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50ZXIiX3MpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5yZXNvbHZlZE9wdGlvbnMo
Z2xvYmFsT2JqZWN0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MmZkNTljZWY2YzZmMmIxNzQ3Y2I4NGE3MTljNzNjMzBiMjMxZDA2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclBy
b3RvdHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsU2Vn
bWVudGVyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGlj
OgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0
YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRs
U2VnbWVudGVyUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOwor
Citwcml2YXRlOgorICAgIEludGxTZWdtZW50ZXJQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg3MzcxZGU4MzI0OTc0MzIzZTA4NzczZDFmMDNmMmJjMTJmOGFlNmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3Bw
CkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxTZWdtZW50cy5oIgorCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIK
KyNpbmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8dW5pY29kZS91Y3Vy
ci5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2lj
dS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50
bFNlZ21lbnRzOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxTZWdtZW50cykgfTsKKworSW50bFNlZ21l
bnRzKiBJbnRsU2VnbWVudHM6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBz
dGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4mJiBz
ZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSlNTdHJpbmcqIHN0cmluZywg
SW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgYXV0byogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRzPih2bS5oZWFwKSkg
SW50bFNlZ21lbnRzKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoc2VnbWVudGVyKSwgV1RGTW92ZShi
dWZmZXIpLCBncmFudWxhcml0eSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3Ry
aW5nKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50czo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitJbnRsU2VnbWVudHM6OkludGxTZWdtZW50cyhWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0
ZXJhdG9yRGVsZXRlcj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwg
SW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCisgICAgLCBtX3NlZ21lbnRlcihXVEZNb3ZlKHNlZ21lbnRlcikpCisgICAgLCBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5
KQoreworfQorCit2b2lkIEludGxTZWdtZW50czo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1N0
cmluZyogc3RyaW5nKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NF
UlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIG1fc3RyaW5nLnNldCh2bSwgdGhpcywgc3Ry
aW5nKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNz
ZWMtaW50bC5zZWdtZW50ZXIucHJvdG90eXBlLmNvbnRhaW5pbmcKK0pTVmFsdWUgSW50bFNlZ21l
bnRzOjpjb250YWluaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW5k
ZXhWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgZG91YmxlIHZhbHVlID0gaW5k
ZXhWYWx1ZS50b0ludGVnZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSBtX2J1ZmZlci0+
c2l6ZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbnQzMl90IGluZGV4
ID0gdG9JbnQzMih2YWx1ZSk7CisKKyAgICAvLyBUaGUgcmVzdWx0IG9mIHVicmtfcHJlY2VkaW5n
IGlzIGFsd2F5cyAqc21hbGxlciogdGhhbiBvZmZzZXQsIG9yIFVCUktfRE9ORS4gSW4gdGhpcyBj
YXNlLCB3ZSBzaG91bGQgc2V0IHNjYW4gcG9zaXRpb24gd2l0aCBgaW5kZXggKyAxYC4KKyAgICAv
LyBFdmVuIGlmIGluZGV4ICsgMSBleGNlZWRzIGxlbmd0aCBvZiBzdHJpbmcgYnkgMSwgdGhpcyBp
cyBkZXNpcmFibGUgaWYgd2Ugd2FudCB0byBzY2FuIHRoZSBsYXN0IHNlZ21lbnQuCisgICAgaW50
MzJfdCBzdGFydEluZGV4ID0gdWJya19wcmVjZWRpbmcobV9zZWdtZW50ZXIuZ2V0KCksIGluZGV4
ICsgMSk7CisgICAgaWYgKHN0YXJ0SW5kZXggPT0gVUJSS19ET05FKQorICAgICAgICBzdGFydElu
ZGV4ID0gMDsKKyAgICAvLyBUaGUgcmVzdWx0IG9mIHVicmtfZm9sbG93aW5nIGlzIGFsd2F5cyBn
cmVhdGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuIFNjYW4gcG9zaXRpb24gc2hvdWxkIGJl
IGBpbmRleGAuCisgICAgaW50MzJfdCBlbmRJbmRleCA9IHVicmtfZm9sbG93aW5nKG1fc2VnbWVu
dGVyLmdldCgpLCBpbmRleCk7CisgICAgaWYgKGVuZEluZGV4ID09IFVCUktfRE9ORSkKKyAgICAg
ICAgZW5kSW5kZXggPSBtX2J1ZmZlci0+c2l6ZSgpOworCisgICAgc2NvcGUucmVsZWFzZSgpOwor
ICAgIHJldHVybiBJbnRsU2VnbWVudGVyOjpjcmVhdGVTZWdtZW50RGF0YU9iamVjdChnbG9iYWxP
YmplY3QsIG1fc3RyaW5nLmdldCgpLCBzdGFydEluZGV4LCBlbmRJbmRleCwgKm1fc2VnbWVudGVy
LCBtX2dyYW51bGFyaXR5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwt
c2VnbWVudGVyLyNzZWMtJXNlZ21lbnRzcHJvdG90eXBlJS1AQGl0ZXJhdG9yCitKU09iamVjdCog
SW50bFNlZ21lbnRzOjpjcmVhdGVTZWdtZW50SXRlcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBzZWdtZW50ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUJy
ZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4odWJya19zYWZlQ2xvbmUobV9zZWdt
ZW50ZXIuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRJdGVyYXRvciJfcyk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHVicmtfZmlyc3Qoc2VnbWVudGVyLmdldCgpKTsK
KyAgICByZXR1cm4gSW50bFNlZ21lbnRJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PnNlZ21lbnRJdGVyYXRvclN0cnVjdHVyZSgpLCBXVEZNb3ZlKHNlZ21lbnRlciksIG1fYnVmZmVy
LCBtX3N0cmluZy5nZXQoKSwgbV9ncmFudWxhcml0eSk7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRz
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsU2VnbWVudHMqPihjZWxsKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fc3RyaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQw
NjNjNzNiYTQyNTY4MTU5ZTBhYTU5YjE2NjM4ZTU4NjczMzg1ODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuaApAQCAtMCwwICsx
LDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRsU2VnbWVu
dGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsU2VnbWVudHMgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9u
RmluYWxPYmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IHRydWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7
CisgICAgICAgIHN0YXRpY19jYXN0PEludGxTZWdtZW50cyo+KGNlbGwpLT5JbnRsU2VnbWVudHM6
On5JbnRsU2VnbWVudHMoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlw
ZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsU2VnbWVudHNTcGFjZTxt
b2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudHMqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JE
ZWxldGVyPiYmLCBCb3g8VmVjdG9yPFVDaGFyPj4mJiwgSlNTdHJpbmcqLCBJbnRsU2VnbWVudGVy
OjpHcmFudWxhcml0eSk7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IEpTVmFsdWUgY29udGFpbmluZyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgaW5kZXhWYWx1ZSk7
CisgICAgSlNPYmplY3QqIGNyZWF0ZVNlZ21lbnRJdGVyYXRvcihKU0dsb2JhbE9iamVjdCopOwor
CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
Citwcml2YXRlOgorICAgIEludGxTZWdtZW50cyhWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVl
X3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPiYmLCBCb3g8VmVjdG9y
PFVDaGFyPj4mJiwgSW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkpOworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBKU1N0cmluZyopOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0
ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVudGVyOworICAgIEJveDxWZWN0
b3I8VUNoYXI+PiBtX2J1ZmZlcjsKKyAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fc3RyaW5n
OworICAgIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzOTY1MGM0ODBjMTNj
ZTIyYWRkNzg4Y2EwOTU3YTU1NWQ0ZGJjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEs
MTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxT
ZWdtZW50c1Byb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVyYXRvcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsU2VnbWVudHNQcm90b3R5cGUubHV0
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFNlZ21lbnRzUHJv
dG90eXBlOjpzX2luZm8gPSB7ICIlU2VnbWVudHMlIiwgJkJhc2U6OnNfaW5mbywgJnNlZ21lbnRz
UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFNlZ21lbnRz
UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50c1Byb3RvdHlwZS5sdXQu
aAorQGJlZ2luIHNlZ21lbnRzUHJvdG90eXBlVGFibGUKKyAgY29udGFpbmluZyAgICAgICBJbnRs
U2VnbWVudHNQcm90b3R5cGVGdW5jQ29udGFpbmluZyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKK0BlbmQKKyovCisKK0ludGxTZWdtZW50c1Byb3RvdHlwZSogSW50bFNlZ21lbnRzUHJvdG90
eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsU2VnbWVudHNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudHNQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdt
ZW50c1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsU2VnbWVudHNQcm90b3R5cGU6Oklu
dGxTZWdtZW50c1Byb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxTZWdtZW50c1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBJbnRsU2VnbWVudHNQcm90b3R5cGVGdW5jSXRl
cmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAwKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNz
ZWMtJXNlZ21lbnRzcHJvdG90eXBlJS5jb250YWluaW5nCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNDb250YWluaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBzZWdtZW50cyA9IGpzRHluYW1pY0Nhc3Q8SW50bFNlZ21lbnRzKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghc2VnbWVudHMpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIlU2VnbWVudHMu
cHJvdG90eXBlJS5jb250YWluaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIFNlZ21lbnRzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jb250YWluaW5nKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtJXNlZ21lbnRzcHJvdG90eXBlJS1AQGl0ZXJhdG9y
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJ
dGVyYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogc2VnbWVudHMgPSBqc0R5bmFt
aWNDYXN0PEludGxTZWdtZW50cyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBp
ZiAoIXNlZ21lbnRzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiJVNlZ21lbnRzLnByb3RvdHlwZSVbQEBpdGVyYXRvcl0gY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgU2VnbWVudHMiX3MpOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudHMt
PmNyZWF0ZVNlZ21lbnRJdGVyYXRvcihnbG9iYWxPYmplY3QpKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNl
Z21lbnRzUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudHNQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjQ0NGRhMTM5ZGI1OTliZTlkZDllNTBlYWEx
OTkyNDVlNWE0NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEludGxTZWdtZW50c1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoSW50bFNlZ21lbnRzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVu
dHNQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRsU2Vn
bWVudHNQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDNj
YjYyMTM3YzA5YzI0ZDZkYTZiYjJhYWEzYWNjMWYyN2I3ZjI1MjAuLjkzN2IxZDg3MjQxMzIxOWFi
YjEwNGU4ZTljOGFjOTJhYjhkMWU0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg2LDYgKzg2LDEyIEBACiAjaW5jbHVkZSAi
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZv
cm1hdC5oIgogI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJ
bnRsU2VnbWVudGVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5j
bHVkZSAiSW50bFNlZ21lbnRzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyLmgiCkBAIC0xMDE3LDYgKzEwMjMsMjQgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
ICAgICAgICAgICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZSA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0
ZShpbml0LnZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
KSk7CiAgICAgICAgICAgICBpbml0LnNldChJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGVT
dHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5
cGUpKTsKICAgICAgICAgfSk7CisgICAgbV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUuaW5pdExh
dGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewor
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2Jh
bE9iamVjdCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZSogc2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlID0gSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0
b3JQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgaW5pdC5zZXQoSW50bFNlZ21lbnRJdGVyYXRv
cjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgc2VnbWVudEl0ZXJhdG9y
UHJvdG90eXBlKSk7CisgICAgICAgIH0pOworICAgIG1fc2VnbWVudGVyU3RydWN0dXJlLmluaXRM
YXRlcigKKyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIEludGxTZWdtZW50ZXJQcm90b3R5
cGUqIHNlZ21lbnRlclByb3RvdHlwZSA9IEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZShp
bml0LnZtLCBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAg
ICAgICBpbml0LnNldChJbnRsU2VnbWVudGVyOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBzZWdtZW50ZXJQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9zZWdt
ZW50c1N0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxT
dHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJ
bnRsU2VnbWVudHNQcm90b3R5cGUqIHNlZ21lbnRzUHJvdG90eXBlID0gSW50bFNlZ21lbnRzUHJv
dG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsU2VnbWVudHNQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxTZWdtZW50czo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgc2VnbWVudHNQcm90b3R5cGUp
KTsKKyAgICAgICAgfSk7CiAgICAgbV9kZWZhdWx0Q29sbGF0b3IuaW5pdExhdGVyKAogICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SW50bENvbGxhdG9yPiYgaW5pdCkgewogICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpOwpAQCAtMTg0OSw2ICsxODczLDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRo
aXNPYmplY3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhp
c09iamVjdC0+bV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAg
dGhpc09iamVjdC0+bV9zZWdtZW50ZXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhp
c09iamVjdC0+bV9zZWdtZW50c1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKIAogICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9uKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzZWRkYWUzMjdjMmVi
ZGY2OWIxMzIzZjg4NjA0NGEwYjY2MDQzYTg0Li45OTllNjhiNDYwOGQ2ZWU1ZjY3YmI0ZWQ4YTA4
ZmU5NTFhZDM2MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKQEAgLTMwMiw2ICszMDIsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcmVsYXRpdmVU
aW1lRm9ybWF0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlPiBtX3NlZ21lbnRJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9zZWdtZW50ZXJTdHJ1Y3R1cmU7CisgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fc2VnbWVudHNTdHJ1Y3R1cmU7CiAK
ICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5jdGlv
bjsKICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJGdW5j
dGlvbjsKQEAgLTgwNSw2ICs4MDgsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVy
ZSgpIHsgcmV0dXJuIG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVy
ZSogcGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJl
LmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJl
KCkgeyByZXR1cm4gbV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Cisg
ICAgU3RydWN0dXJlKiBzZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3NlZ21l
bnRJdGVyYXRvclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHNlZ21lbnRl
clN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fc2VnbWVudGVyU3RydWN0dXJlLmdldCh0aGlzKTsgfQor
ICAgIFN0cnVjdHVyZSogc2VnbWVudHNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3NlZ21lbnRzU3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1v
dGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVt
b3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggOTI1NWJkZDVhOWRmM2U3MjNkYzdmYzc0YjkyNzFiNGM4
OTIxMjEwZS4uNDRmOTNkZTJkNWI0YWRiYzUxYmYzMGNmZDIwNWFjZTg4YmVjODQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00OTAsNiArNDkw
LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxz
ZTsKICAgICB2KEJvb2wsIHVzZVdlYWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBX
ZWFrUmVmIGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYo
Qm9vbCwgdXNlSW50bERpc3BsYXlOYW1lcywgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50
bC5EaXNwbGF5TmFtZXMgY29uc3RydWN0b3IuIikgXAorICAgIHYoQm9vbCwgdXNlSW50bFNlZ21l
bnRlciwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5TZWdtZW50ZXIgY29uc3RydWN0
b3IuIikgXAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBO
b3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24g
cHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBj
bGFpbSB0byBiZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4g
b2JqZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBmb3Jj
ZU1pbmlWTU1vZGUsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1pbmkg
Vk0gbW9kZSBvbi4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTc4
YjQzNDI1MDgyMmE0Mzk3NWVkYTNlNzgwZWZmNGIwYjQ3NmFiYS4uMDg1YjRmYzBjYjRkYTljYzc1
YWEwYmVhMGFmYTYxNDMxYTU4ODVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtNzEsNiArNzEsOSBAQAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNs
dWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkludGxTZWdt
ZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKICNpbmNsdWRlICJJc29IZWFwQ2Vs
bFR5cGUuaCIKICNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAi
SklUQ29kZS5oIgpAQCAtMzE0LDYgKzMxNyw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSwgYm9vbCogc3VjY2VzcykKICAgICAsIGludGxOdW1iZXJGb3JtYXRIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bE51bWJlckZvcm1hdD4oKSkKICAg
ICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsUGx1cmFsUnVsZXM+KCkpCiAgICAgLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KCkpCisg
ICAgLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEludGxTZWdtZW50SXRlcmF0b3I+KCkpCisgICAgLCBpbnRsU2VnbWVudGVySGVhcENlbGxU
eXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxTZWdtZW50ZXI+KCkpCisgICAgLCBpbnRs
U2VnbWVudHNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRz
PigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2Nr
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2s+KCkpCiAgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPFdlYkFzc2VtYmx5RnVuY3Rpb24+KCkpCkBAIC0xNTE5LDYgKzE1MjUsOSBA
QCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNl
LCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlLgogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxs
VHlwZS5nZXQoKSwgSW50bE51bWJlckZvcm1hdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENl
bGxUeXBlLmdldCgpLCBJbnRsUGx1cmFsUnVsZXMpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVU
aW1lRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQorRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JT
cGFjZSwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRJ
dGVyYXRvcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2Vn
bWVudGVyU3BhY2UsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50
ZXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRz
U3BhY2UsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRzKQogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVG9X
YXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2Vi
QXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVjZApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggN2QyZjI0MzgxZDM4ODlkZGI5YjgzMjg3OGQ0OGVj
ZTNiMzQ3MDIwMy4uYzdiMTExMWU0NTM1Mjg0MGY0NWEwZDczOTJlYTc2MWZkZTg1ZWIyYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMzEsNiArMTMxLDkgQEAgY2xhc3MgSW50
bExvY2FsZTsKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQ7CiBjbGFzcyBJbnRsUGx1cmFsUnVsZXM7
CiBjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OworY2xhc3MgSW50bFNlZ21lbnRJdGVyYXRv
cjsKK2NsYXNzIEludGxTZWdtZW50ZXI7CitjbGFzcyBJbnRsU2VnbWVudHM7CiBjbGFzcyBKU0FQ
SUdsb2JhbE9iamVjdDsKIGNsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsKIGNsYXNzIEpT
QVBJV3JhcHBlck9iamVjdDsKQEAgLTQwOCw2ICs0MTEsOSBAQCBjbGFzcyBWTSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4g
ewogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxOdW1iZXJGb3JtYXRI
ZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFBs
dXJhbFJ1bGVzSGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudGVySGVhcENlbGxU
eXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxTZWdtZW50c0hl
YXBDZWxsVHlwZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBD
ZWxsVHlwZTsKQEAgLTU2Nyw2ICs1NzMsOSBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1bGVzU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsUmVsYXRpdmVU
aW1lRm9ybWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihpbnRsU2VnbWVudGVyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUihpbnRsU2VnbWVudHNTcGFjZSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IGE3N2ZkOGM2NDBh
NDk2NDgyOTc3YjliZWMyODc2ZGEzNTVlMjJhYWUuLjQyNWQ0ZDU4YzViYjU3NzI2NmRhNzNlYWM1
Y2I1Njk0OTVhYWUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTQyNiw3ICs0
MjYsNyBAQCBib29sIFN0cmluZzo6cGVyY2VudGFnZShpbnQmIHJlc3VsdCkgY29uc3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotVmVjdG9yPFVDaGFyPiBTdHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkgY29uc3QKK1ZlY3RvcjxVQ2hhcj4gU3RyaW5nOjpjaGFyYWN0ZXJzV2l0
aG91dE51bGxUZXJtaW5hdGlvbigpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7
CiAKQEAgLTQ0MSwxMyArNDQxLDE4IEBAIFZlY3RvcjxVQ2hhcj4gU3RyaW5nOjpjaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVyczE2ID0gbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKTsKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoY2hhcmFjdGVyczE2LCBtX2ltcGwtPmxlbmd0aCgpKTsKICAgICAgICAgfQotCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoMCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
VmVjdG9yPFVDaGFyPiBTdHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29u
c3QKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9u
KCk7CisgICAgcmVzdWx0LmFwcGVuZCgwKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBTdHJp
bmcgU3RyaW5nOjpudW1iZXIoaW50IG51bWJlcikKIHsKICAgICByZXR1cm4gbnVtYmVyVG9TdHJp
bmdTaWduZWQ8U3RyaW5nPihudW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggZjk0
ZWRkOTM5MDQ0NjU1N2Y4NzZmNjA2YmIyYzczMWRjNjk4ZjY1NC4uMGYxNjYyZGY0YmM4NDBjMzdk
N2ZmZDc1NWFjMDVhNDUyMTA2YzcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0yMDIs
NiArMjAyLDcgQEAgY2xhc3MgU3RyaW5nIGZpbmFsIHsKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gTWF4TGVuZ3RoKSBjb25zdCB7
IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0cmluZy5pbXBsKCksIHN0YXJ0
KSA6IG5vdEZvdW5kOyB9CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBj
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkgY29u
c3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0
KHVuc2lnbmVkKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCBmNGExZTg5MjEwZmYwYTgzMGM0YmJlZTNkODRjNmQ5MWIxZDI5
MjM5Li4yYjk5MDRlNWQyYjEyZTg5MGYyNzNhYzczYzg2ZThhMzY1MWJlYzZiIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTA3LTIxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gQWRkIEludGwuU2VnbWVudGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM2MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLXNlZ21lbnRlci5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGROb3RUaHJvdyk6CisgICAgICAg
IChmdW5jKToKKwogMjAyMC0wNy0yMSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNjQzMzApOiBpbmZpbml0ZSBsb29wIGlu
IEpTQyBzdHJlc3MgdGVzdHMgdXNpbmcgY2xvb3AKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2ludGwtc2VnbWVudGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1zZWdtZW50ZXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDg1MDZmMzAzNTNjMDExZjRmYWY2YmRiYjVkZmRhODM3ZDk5NWRiYwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtc2VnbWVudGVyLmpzCkBAIC0wLDAgKzEs
MzMzIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VJbnRsU2VnbWVudGVyPTEiKQorCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkTm90VGhyb3coZnVuYykgeworICAgIGZ1bmMoKTsKK30KKworewor
ICAgIHNob3VsZEJlKEludGwuU2VnbWVudGVyIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOwor
ICAgIHNob3VsZEJlKEludGwuU2VnbWVudGVyLmxlbmd0aCwgMCk7CisgICAgc2hvdWxkQmUoT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlNlZ21lbnRlciwgJ3Byb3RvdHlwZScp
LndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLlNlZ21lbnRlciwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsK
KyAgICBzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuU2VnbWVu
dGVyLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxzZSk7CisgICAgbGV0IHNlZ21lbnRl
ciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiZnIiKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShzZWdtZW50ZXIucmVzb2x2ZWRPcHRpb25zKCkpLCBgeyJsb2NhbGUiOiJmciIsImdyYW51bGFy
aXR5IjoiZ3JhcGhlbWUifWApOworICAgIHNob3VsZEJlKHNlZ21lbnRlci50b1N0cmluZygpLCBg
W29iamVjdCBJbnRsLlNlZ21lbnRlcl1gKTsKKyAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZXcg
SW50bC5TZWdtZW50ZXIoKSk7Cit9CisKK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwu
U2VnbWVudGVyKCJmciIsIHtncmFudWxhcml0eTogIndvcmQifSk7CisKKyAgICBsZXQgaW5wdXQg
PSAiTW9pPyAgTidlc3QtY2UgcGFzLiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNl
Z21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgMywgIk1v
aSIsIHRydWUgXSwKKyAgICAgICAgWyAzLCA0LCAiPyIsIGZhbHNlIF0sCisgICAgICAgIFsgNCwg
NiwgIiAgIiwgZmFsc2UgXSwKKyAgICAgICAgWyA2LCAxMSwgIk4nZXN0IiwgdHJ1ZSBdLAorICAg
ICAgICBbIDExLCAxMiwgIi0iLCBmYWxzZSBdLAorICAgICAgICBbIDEyLCAxNCwgImNlIiwgdHJ1
ZSBdLAorICAgICAgICBbIDE0LCAxNSwgIiAiLCBmYWxzZSBdLAorICAgICAgICBbIDE1LCAxOCwg
InBhcyIsIHRydWUgXSwKKyAgICAgICAgWyAxOCwgMTksICIuIiwgZmFsc2UgXSwKKyAgICBdOwor
ICAgIGxldCBjdXJzb3IgPSAwOworICAgIGZvciAobGV0IHtzZWdtZW50LCBpbmRleCwgaXNXb3Jk
TGlrZX0gb2Ygc2VnbWVudHMpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbY3Vyc29y
KytdOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMF0sIGluZGV4KTsKKyAgICAgICAgc2hvdWxk
QmUocmVzdWx0WzFdLCBpbmRleCArIHNlZ21lbnQubGVuZ3RoKTsKKyAgICAgICAgc2hvdWxkQmUo
cmVzdWx0WzJdLCBzZWdtZW50KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzNdLCBpc1dvcmRM
aWtlKTsKKyAgICB9CisKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlNlZ21lbnRl
ci5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2ZyJykpLCBgWyJmciJdYCk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoc2VnbWVudGVyLnJlc29sdmVkT3B0aW9ucygpKSwgYHsibG9jYWxlIjoiZnIi
LCJncmFudWxhcml0eSI6IndvcmQifWApOworfQorCit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5l
dyBJbnRsLlNlZ21lbnRlcigiZnIiLCB7Z3JhbnVsYXJpdHk6ICJncmFwaGVtZSJ9KTsKKworICAg
IGxldCBpbnB1dCA9ICJNb2k/ICBOJ2VzdC1jZSBwYXMuIjsKKyAgICBsZXQgc2VnbWVudHMgPSBz
ZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3Ig
KGxldCB7c2VnbWVudCwgaW5kZXgsIGlzV29yZExpa2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAg
IGxldCBjdXJyZW50ID0gY3Vyc29yKys7CisgICAgICAgIHNob3VsZEJlKHNlZ21lbnQsIGlucHV0
W2N1cnJlbnRdKTsKKyAgICAgICAgc2hvdWxkQmUoaW5kZXgsIGN1cnJlbnQpOworICAgICAgICBz
aG91bGRCZShpc1dvcmRMaWtlLCB1bmRlZmluZWQpOworICAgIH0KKworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KHNlZ21lbnRlci5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImZy
IiwiZ3JhbnVsYXJpdHkiOiJncmFwaGVtZSJ9YCk7Cit9CisKK3sKKyAgICBsZXQgc2VnbWVudGVy
ID0gbmV3IEludGwuU2VnbWVudGVyKCJlbiIsIHtncmFudWxhcml0eTogInNlbnRlbmNlIn0pOwor
CisgICAgbGV0IGlucHV0ID0gIlBlcmZvcm1hbmNlIGlzIGEgdG9wIHByaW9yaXR5IGZvciBXZWJL
aXQuIFdlIGFkaGVyZSB0byBhIHNpbXBsZSBkaXJlY3RpdmUgZm9yIGFsbCB3b3JrIHdlIGRvIG9u
IFdlYktpdDogVGhlIHdheSB0byBtYWtlIGEgcHJvZ3JhbSBmYXN0ZXIgaXMgdG8gbmV2ZXIgbGV0
IGl0IGdldCBzbG93ZXIuIjsKKyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChp
bnB1dCk7CisKKyAgICBsZXQgcmVzdWx0cyA9IFsKKyAgICAgICAgWyAwLCA0MiwgIlBlcmZvcm1h
bmNlIGlzIGEgdG9wIHByaW9yaXR5IGZvciBXZWJLaXQuICIsIHVuZGVmaW5lZCBdLAorICAgICAg
ICBbIDQyLCAxNjcsICJXZSBhZGhlcmUgdG8gYSBzaW1wbGUgZGlyZWN0aXZlIGZvciBhbGwgd29y
ayB3ZSBkbyBvbiBXZWJLaXQ6IFRoZSB3YXkgdG8gbWFrZSBhIHByb2dyYW0gZmFzdGVyIGlzIHRv
IG5ldmVyIGxldCBpdCBnZXQgc2xvd2VyLiIsIHVuZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0
IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBv
ZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJzb3IrK107Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91bGRCZShyZXN1
bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRb
Ml0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29yZExpa2UpOwor
ICAgIH0KKworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRlci5yZXNvbHZlZE9w
dGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwiZ3JhbnVsYXJpdHkiOiJzZW50ZW5jZSJ9YCk7Cit9
CisKKy8vIGxhbmd1YWdlcyB3aXRob3V0IHNwYWNlcy4KK3sKKyAgICBsZXQgc2VnbWVudGVyID0g
bmV3IEludGwuU2VnbWVudGVyKCJqYSIsIHtncmFudWxhcml0eTogIndvcmQifSk7CisKKyAgICAv
LyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JX0FtX2FfQ2F0CisgICAgbGV0IGlucHV0
ID0gIuWQvui8qeOBr+eMq+OBp+OBguOCi+OAguWQjeWJjeOBr+OBvuOBoOeEoeOBhOOAguOBqeOB
k+OBp+eUn+OCjOOBn+OBi+OBqOOCk+OBqOimi+W9k+OBjOOBpOOBi+OBrOOAgiI7CisgICAgbGV0
IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMg
PSBbCisgICAgICAgIFsgMCwgMiwgIuWQvui8qSIsIHRydWUgXSwKKyAgICAgICAgWyAyLCAzLCAi
44GvIiwgdHJ1ZSBdLAorICAgICAgICBbIDMsIDQsICLnjKsiLCB0cnVlIF0sCisgICAgICAgIFsg
NCwgNSwgIuOBpyIsIHRydWUgXSwKKyAgICAgICAgWyA1LCA3LCAi44GC44KLIiwgdHJ1ZSBdLAor
ICAgICAgICBbIDcsIDgsICLjgIIiLCBmYWxzZSBdLAorICAgICAgICBbIDgsIDEwLCAi5ZCN5YmN
IiwgdHJ1ZSBdLAorICAgICAgICBbIDEwLCAxMSwgIuOBryIsIHRydWUgXSwKKyAgICAgICAgWyAx
MSwgMTMsICLjgb7jgaAiLCB0cnVlIF0sCisgICAgICAgIFsgMTMsIDE1LCAi54Sh44GEIiwgdHJ1
ZSBdLAorICAgICAgICBbIDE1LCAxNiwgIuOAgiIsIGZhbHNlIF0sCisgICAgICAgIFsgMTYsIDE4
LCAi44Gp44GTIiwgdHJ1ZSBdLAorICAgICAgICBbIDE4LCAxOSwgIuOBpyIsIHRydWUgXSwKKyAg
ICAgICAgWyAxOSwgMjEsICLnlJ/jgowiLCB0cnVlIF0sCisgICAgICAgIFsgMjEsIDIzLCAi44Gf
44GLIiwgdHJ1ZSBdLAorICAgICAgICBbIDIzLCAyNiwgIuOBqOOCk+OBqCIsIHRydWUgXSwKKyAg
ICAgICAgWyAyNiwgMjgsICLopovlvZMiLCB0cnVlIF0sCisgICAgICAgIFsgMjgsIDI5LCAi44GM
IiwgdHJ1ZSBdLAorICAgICAgICBbIDI5LCAzMCwgIuOBpCIsIHRydWUgXSwKKyAgICAgICAgWyAz
MCwgMzEsICLjgYsiLCB0cnVlIF0sCisgICAgICAgIFsgMzEsIDMyLCAi44GsIiwgdHJ1ZSBdLAor
ICAgICAgICBbIDMyLCAzMywgIuOAgiIsIGZhbHNlIF0sCisgICAgXTsKKyAgICBsZXQgY3Vyc29y
ID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVudCwgaW5kZXgsIGlzV29yZExpa2V9IG9mIHNlZ21l
bnRzKSB7CisgICAgICAgIGxldCByZXN1bHQgPSByZXN1bHRzW2N1cnNvcisrXTsKKyAgICAgICAg
c2hvdWxkQmUocmVzdWx0WzBdLCBpbmRleCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwg
aW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgc2Vn
bWVudCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFszXSwgaXNXb3JkTGlrZSk7CisgICAgfQor
fQorCit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiamEiLCB7Z3Jh
bnVsYXJpdHk6ICJncmFwaGVtZSJ9KTsKKworICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0lfQW1fYV9DYXQKKyAgICBsZXQgaW5wdXQgPSAi5ZC+6Lyp44Gv54yr44Gn44GC44KL
44CC5ZCN5YmN44Gv44G+44Gg54Sh44GE44CC44Gp44GT44Gn55Sf44KM44Gf44GL44Go44KT44Go
6KaL5b2T44GM44Gk44GL44Gs44CCIjsKKyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2Vn
bWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVzdWx0cyA9IFsKKyAgICAgICAgWyAwLCAxLCAi5ZC+
IiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgMSwgMiwgIui8qSIsIHVuZGVmaW5lZCBdLAorICAg
ICAgICBbIDIsIDMsICLjga8iLCB1bmRlZmluZWQgXSwKKyAgICAgICAgWyAzLCA0LCAi54yrIiwg
dW5kZWZpbmVkIF0sCisgICAgICAgIFsgNCwgNSwgIuOBpyIsIHVuZGVmaW5lZCBdLAorICAgICAg
ICBbIDUsIDYsICLjgYIiLCB1bmRlZmluZWQgXSwKKyAgICAgICAgWyA2LCA3LCAi44KLIiwgdW5k
ZWZpbmVkIF0sCisgICAgICAgIFsgNywgOCwgIuOAgiIsIHVuZGVmaW5lZCBdLAorICAgICAgICBb
IDgsIDksICLlkI0iLCB1bmRlZmluZWQgXSwKKyAgICAgICAgWyA5LCAxMCwgIuWJjSIsIHVuZGVm
aW5lZCBdLAorICAgICAgICBbIDEwLCAxMSwgIuOBryIsIHVuZGVmaW5lZCBdLAorICAgICAgICBb
IDExLCAxMiwgIuOBviIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDEyLCAxMywgIuOBoCIsIHVu
ZGVmaW5lZCBdLAorICAgICAgICBbIDEzLCAxNCwgIueEoSIsIHVuZGVmaW5lZCBdLAorICAgICAg
ICBbIDE0LCAxNSwgIuOBhCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE1LCAxNiwgIuOAgiIs
IHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE2LCAxNywgIuOBqSIsIHVuZGVmaW5lZCBdLAorICAg
ICAgICBbIDE3LCAxOCwgIuOBkyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE4LCAxOSwgIuOB
pyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE5LCAyMCwgIueUnyIsIHVuZGVmaW5lZCBdLAor
ICAgICAgICBbIDIwLCAyMSwgIuOCjCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIxLCAyMiwg
IuOBnyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIyLCAyMywgIuOBiyIsIHVuZGVmaW5lZCBd
LAorICAgICAgICBbIDIzLCAyNCwgIuOBqCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI0LCAy
NSwgIuOCkyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI1LCAyNiwgIuOBqCIsIHVuZGVmaW5l
ZCBdLAorICAgICAgICBbIDI2LCAyNywgIuimiyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI3
LCAyOCwgIuW9kyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI4LCAyOSwgIuOBjCIsIHVuZGVm
aW5lZCBdLAorICAgICAgICBbIDI5LCAzMCwgIuOBpCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBb
IDMwLCAzMSwgIuOBiyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDMxLCAzMiwgIuOBrCIsIHVu
ZGVmaW5lZCBdLAorICAgICAgICBbIDMyLCAzMywgIuOAgiIsIHVuZGVmaW5lZCBdLAorICAgIF07
CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dv
cmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJz
b3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91
bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRC
ZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29y
ZExpa2UpOworICAgIH0KK30KKworeworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdt
ZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAic2VudGVuY2UifSk7CisKKyAgICAvLyBodHRwczov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9JX0FtX2FfQ2F0CisgICAgbGV0IGlucHV0ID0gIuWQvui8
qeOBr+eMq+OBp+OBguOCi+OAguWQjeWJjeOBr+OBvuOBoOeEoeOBhOOAguOBqeOBk+OBp+eUn+OC
jOOBn+OBi+OBqOOCk+OBqOimi+W9k+OBjOOBpOOBi+OBrOOAgiI7CisgICAgbGV0IHNlZ21lbnRz
ID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAg
ICAgIFsgMCwgOCwgIuWQvui8qeOBr+eMq+OBp+OBguOCi+OAgiIsIHVuZGVmaW5lZCBdLAorICAg
ICAgICBbIDgsIDE2LCAi5ZCN5YmN44Gv44G+44Gg54Sh44GE44CCIiwgdW5kZWZpbmVkIF0sCisg
ICAgICAgIFsgMTYsIDMzLCAi44Gp44GT44Gn55Sf44KM44Gf44GL44Go44KT44Go6KaL5b2T44GM
44Gk44GL44Gs44CCIiwgdW5kZWZpbmVkIF0sCisgICAgXTsKKyAgICBsZXQgY3Vyc29yID0gMDsK
KyAgICBmb3IgKGxldCB7c2VnbWVudCwgaW5kZXgsIGlzV29yZExpa2V9IG9mIHNlZ21lbnRzKSB7
CisgICAgICAgIGxldCByZXN1bHQgPSByZXN1bHRzW2N1cnNvcisrXTsKKyAgICAgICAgc2hvdWxk
QmUocmVzdWx0WzBdLCBpbmRleCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgaW5kZXgg
KyBzZWdtZW50Lmxlbmd0aCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgc2VnbWVudCk7
CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFszXSwgaXNXb3JkTGlrZSk7CisgICAgfQorfQorCisv
LyBTdXJyb2dhdGUgcGFpcnMuCit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21l
bnRlcigiamEiLCB7Z3JhbnVsYXJpdHk6ICJncmFwaGVtZSJ9KTsKKyAgICBsZXQgaW5wdXQgPSAi
8KCut+mHjuWutiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQp
OworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgMiwgIvCgrrciLCB1bmRlZmlu
ZWQgXSwKKyAgICAgICAgWyAyLCAzLCAi6YeOIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgMywg
NCwgIuWutiIsIHVuZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAg
Zm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAg
ICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJl
c3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2Vn
bWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAg
ICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29yZExpa2UpOworICAgIH0KK30KKworeworICAg
IGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAi
d29yZCJ9KTsKKyAgICBsZXQgaW5wdXQgPSAi8KCut+mHjuWutiI7CisgICAgbGV0IHNlZ21lbnRz
ID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAg
ICAgIFsgMCwgMiwgIvCgrrciLCB0cnVlIF0sCisgICAgICAgIFsgMiwgNCwgIumHjuWutiIsIHRy
dWUgXSwKKyAgICBdOworICAgIGxldCBjdXJzb3IgPSAwOworICAgIGZvciAobGV0IHtzZWdtZW50
LCBpbmRleCwgaXNXb3JkTGlrZX0gb2Ygc2VnbWVudHMpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9
IHJlc3VsdHNbY3Vyc29yKytdOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMF0sIGluZGV4KTsK
KyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCBpbmRleCArIHNlZ21lbnQubGVuZ3RoKTsKKyAg
ICAgICAgc2hvdWxkQmUocmVzdWx0WzJdLCBzZWdtZW50KTsKKyAgICAgICAgc2hvdWxkQmUocmVz
dWx0WzNdLCBpc1dvcmRMaWtlKTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgc2VnbWVudGVyID0g
bmV3IEludGwuU2VnbWVudGVyKCJqYSIsIHtncmFudWxhcml0eTogInNlbnRlbmNlIn0pOworICAg
IGxldCBpbnB1dCA9ICLwoK636YeO5a62IjsKKyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIu
c2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVzdWx0cyA9IFsKKyAgICAgICAgWyAwLCA0LCAi
8KCut+mHjuWutiIsIHVuZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7Cisg
ICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgewor
ICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJl
KHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsg
c2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOwor
ICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29yZExpa2UpOworICAgIH0KK30KKworewor
ICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5
OiAiZ3JhcGhlbWUifSk7CisgICAgbGV0IGlucHV0ID0gIvCgrrfph47lrrYiOworICAgIGxldCBz
ZWdtZW50cyA9IHNlZ21lbnRlci5zZWdtZW50KGlucHV0KTsKKworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmcoMCkpLCBgeyJzZWdtZW50Ijoi8KCutyIsImlu
ZGV4IjowLCJpbnB1dCI6IvCgrrfph47lrrYifWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmcoMSkpLCBgeyJzZWdtZW50Ijoi8KCutyIsImluZGV4Ijow
LCJpbnB1dCI6IvCgrrfph47lrrYifWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNl
Z21lbnRzLmNvbnRhaW5pbmcoMikpLCBgeyJzZWdtZW50Ijoi6YeOIiwiaW5kZXgiOjIsImlucHV0
Ijoi8KCut+mHjuWutiJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMu
Y29udGFpbmluZygzKSksIGB7InNlZ21lbnQiOiLlrrYiLCJpbmRleCI6MywiaW5wdXQiOiLwoK63
6YeO5a62In1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShzZWdtZW50cy5jb250YWlu
aW5nKDQpKSwgdW5kZWZpbmVkKTsKK30KKworeworICAgIC8vIOKUgzAgMSAyIDMgNCA14pSDNuKU
gzfilIM44pSDOQorICAgIC8vIOKUg0EgbCBsIG8gbiBz4pSDLeKUg3nilIMh4pSDCisgICAgbGV0
IGlucHV0ID0gIkFsbG9ucy15ISI7CisKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2Vn
bWVudGVyKCJmciIsIHtncmFudWxhcml0eTogIndvcmQifSk7CisgICAgbGV0IHNlZ21lbnRzID0g
c2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworICAgIGxldCBjdXJyZW50ID0gdW5kZWZpbmVkOwor
CisgICAgY3VycmVudCA9IHNlZ21lbnRzLmNvbnRhaW5pbmcoMCk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiJBbGxvbnMiLCJpbmRleCI6MCwiaW5w
dXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtlIjp0cnVlfWApOworCisgICAgY3VycmVudCA9IHNl
Z21lbnRzLmNvbnRhaW5pbmcoNSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVu
dCksIGB7InNlZ21lbnQiOiJBbGxvbnMiLCJpbmRleCI6MCwiaW5wdXQiOiJBbGxvbnMteSEiLCJp
c1dvcmRMaWtlIjp0cnVlfWApOworCisgICAgY3VycmVudCA9IHNlZ21lbnRzLmNvbnRhaW5pbmco
Nik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiIt
IiwiaW5kZXgiOjYsImlucHV0IjoiQWxsb25zLXkhIiwiaXNXb3JkTGlrZSI6ZmFsc2V9YCk7CisK
KyAgICBjdXJyZW50ID0gc2VnbWVudHMuY29udGFpbmluZyhjdXJyZW50LmluZGV4ICsgY3VycmVu
dC5zZWdtZW50Lmxlbmd0aCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCks
IGB7InNlZ21lbnQiOiJ5IiwiaW5kZXgiOjcsImlucHV0IjoiQWxsb25zLXkhIiwiaXNXb3JkTGlr
ZSI6dHJ1ZX1gKTsKKworICAgIGN1cnJlbnQgPSBzZWdtZW50cy5jb250YWluaW5nKGN1cnJlbnQu
aW5kZXggKyBjdXJyZW50LnNlZ21lbnQubGVuZ3RoKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShjdXJyZW50KSwgYHsic2VnbWVudCI6IiEiLCJpbmRleCI6OCwiaW5wdXQiOiJBbGxvbnMt
eSEiLCJpc1dvcmRMaWtlIjpmYWxzZX1gKTsKKworICAgIGN1cnJlbnQgPSBzZWdtZW50cy5jb250
YWluaW5nKGN1cnJlbnQuaW5kZXggKyBjdXJyZW50LnNlZ21lbnQubGVuZ3RoKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW50KSwgdW5kZWZpbmVkKTsKKyAgICAvLyDihpIgdW5k
ZWZpbmVkCit9Cit7CisgICAgbGV0IGlucHV0ID0gIiI7CisKKyAgICBsZXQgc2VnbWVudGVyID0g
bmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtncmFudWxhcml0eTogIndvcmQifSk7CisgICAgbGV0
IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmluZygwKSksIHVuZGVmaW5lZCk7CisgICAgbGV0
IHJlc3VsdHMgPSBBcnJheS5mcm9tKHNlZ21lbnRzW1N5bWJvbC5pdGVyYXRvcl0oKSk7CisgICAg
c2hvdWxkQmUocmVzdWx0cy5sZW5ndGgsIDApOworfQoreworICAgIGxldCBpbnB1dCA9ICIgIjsK
KworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdtZW50ZXIoImZyIiwge2dyYW51bGFy
aXR5OiAid29yZCJ9KTsKKyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1
dCk7CisKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShzZWdtZW50cy5jb250YWluaW5nKDAp
KSwgYHsic2VnbWVudCI6IiAiLCJpbmRleCI6MCwiaW5wdXQiOiIgIiwiaXNXb3JkTGlrZSI6ZmFs
c2V9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmluZygx
KSksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29u
dGFpbmluZygyKSksIHVuZGVmaW5lZCk7CisgICAgbGV0IHJlc3VsdHMgPSBBcnJheS5mcm9tKHNl
Z21lbnRzW1N5bWJvbC5pdGVyYXRvcl0oKSk7CisgICAgc2hvdWxkQmUocmVzdWx0cy5sZW5ndGgs
IDEpOworICAgIGxldCB7c2VnbWVudCwgaW5kZXgsIGlzV29yZExpa2V9ID0gcmVzdWx0c1swXTsK
KyAgICBzaG91bGRCZSgwLCBpbmRleCk7CisgICAgc2hvdWxkQmUoMSwgaW5kZXggKyBzZWdtZW50
Lmxlbmd0aCk7CisgICAgc2hvdWxkQmUoIiAiLCBzZWdtZW50KTsKKyAgICBzaG91bGRCZShmYWxz
ZSwgaXNXb3JkTGlrZSk7Cit9Cg==
</data>
<flag name="review"
          id="420294"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405242</attachid>
            <date>2020-07-25 22:44:34 -0700</date>
            <delta_ts>2020-07-25 22:44:34 -0700</delta_ts>
            <desc>Rebaseline, test262</desc>
            <filename>bug-213638-20200725224433.patch</filename>
            <type>text/plain</type>
            <size>115861</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0ODk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjQwNjNiOTYzZjk3NjQxNWI0ZTRjMjkxNjcwMWJkZmUzNzFjOThjLi43MTU5MzA1YjU0MDFkZTg1
NzA3MjI3N2Q4NjNkZDk5NmI1NjQyZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMC0wNy0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBJbnRsLlNlZ21lbnRlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNjM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgUm9zcyBLaXJzbGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgSW50bC5T
ZWdtZW50ZXJbMV0uIEludGwuU2VnbWVudGVyIG9mZmVycyBhY2Nlc3MgdG8gSUNVIGJyZWFrIGl0
ZXJhdG9yIGZlYXR1cmUsIHdoaWNoIGNhbiBicmVhayBzdHJpbmdzIGludG8gZ3JhcGhlbWUgY2x1
c3RlciAvIHdvcmRzIC8gc2VudGVuY2VzLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIu
Y29tL3RjMzkvcHJvcG9zYWwtaW50bC1zZWdtZW50ZXIKKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpjcmVhdGVTZWdtZW50ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bFNlZ21lbnRlckF2YWls
YWJsZUxvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJ
bnRsU2VnbWVudEl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJh
dG9yOjpJbnRsU2VnbWVudEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVy
YXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9y
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yLmg6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpJbnRsU2VnbWVu
dEl0ZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlRnVuY05leHQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50ZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
SW50bFNlZ21lbnRlcjo6SW50bFNlZ21lbnRlcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50
ZXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6aW5pdGlh
bGl6ZVNlZ21lbnRlcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OnNlZ21lbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyOjpyZXNvbHZlZE9wdGlvbnMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyOjpncmFudWxhcml0eVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxTZWdtZW50ZXI6OmNyZWF0ZVNlZ21lbnREYXRhT2JqZWN0KToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxTZWdtZW50ZXIuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9J
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVy
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50
ZXJDb25zdHJ1Y3Rvcjo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEludGxTZWdtZW50ZXIpOgorICAgICAgICAoSlNDOjpjYWxsSW50bFNlZ21lbnRl
cik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXJDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2Fs
ZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaDogQWRk
ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGU6OkludGxTZWdtZW50ZXJQcm90b3R5cGUpOgor
ICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudCk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICog
cnVudGltZS9JbnRsU2VnbWVudHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bFNlZ21l
bnRzOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudHM6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6SW50bFNlZ21lbnRzKToKKyAgICAgICAg
KEpTQzo6SW50bFNlZ21lbnRzOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxT
ZWdtZW50czo6Y29udGFpbmluZyk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6Y3JlYXRl
U2VnbWVudEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRzOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KiBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsU2VnbWVudHNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxTZWdt
ZW50c1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21l
bnRzUHJvdG90eXBlOjpJbnRsU2VnbWVudHNQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRs
U2VnbWVudHNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bFNl
Z21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVu
dHNQcm90b3R5cGVGdW5jSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRz
UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZWdtZW50SXRlcmF0b3JT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2VnbWVudGVyU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNlZ21lbnRzU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIwLTA3LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBwbHVn
aW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KCkgc2hvdWxkIHN1cHBvcnQgVk1JbnF1
aXJ5IHJlcXVlc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCBkNzllNDQ2OWRiZDg1MmRkNjYxYmM5MGUwYjYyNDRkMmYxZjcw
M2JkLi4xZDAxNmVjOTBjOTUxYTNkYzQ4ZDJhYTg5NGYzZjczNmVjMGJhOTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIwLTA3LTI1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0pTQ10gQWRkIEludGwuU2VnbWVudGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM2MzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjpjaGFyYWN0ZXJzV2l0aG91dE51bGxUZXJtaW5hdGlvbiBjb25z
dCk6CisgICAgICAgIChXVEY6OlN0cmluZzo6Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24g
Y29uc3QpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDIwLTA3LTIzICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGlPUyBzaW11
bGF0b3IgZG9lcyBub3Qgc3VwcG9ydCBXZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGE4NjI4OGIyZTc3NzBlODgxN2EwZThkYjJiNDhkNzI2Mzc3OGRjMTUu
LjdkMDIxNjBmZTRkNmNjYWU5MDI3MGNjYjg1NmIwNzA5ZjIyM2M0MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgwLDYgKzgwLDEwIEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
ICAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAgcnVu
dGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlw
ZS5jcHAKKyAgICBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1l
L0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
ICAgICBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cmlu
ZGV4IDVhMGM4ODNkNTM0OGU2NTY3YWVmZjk2YWViYzA4MWZiYTA3NmNlMzcuLjNjYzA5NWEyYWNi
YmZkNjU1OTM1M2VkNDQxYTlmYjI5MTMzMDE1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNDcsNiArMTQ3
LDEwIEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3Iu
Y3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAK
ICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3Iu
Y3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCisk
KFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKICQoUFJPSkVD
VF9ESVIpL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0pTSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMmJkZjViMmM4MjJhNmQ5
ZTdiNmY0NTZiYjBhOTYxNjNlZTFkNmQxMC4uY2ViOTI4ZmQ5Nzc1NmQwMGJkOTdjY2RkZTNmNTYx
MTlhMDQxNmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzcsNiArMzcsMTAgQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxQbHVyYWxSdWxlc0Nv
bnN0cnVjdG9yLmwKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFNlZ21l
bnRJdGVyYXRvclByb3RvdHlwZS5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5sdXQuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxTZWdt
ZW50ZXJQcm90b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnRsU2VnbWVudHNQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQ1ZDZmMmJiZDAxMzMwN2M4NGE4MTAzN2MwMWI1
MjFjYmQyYWE0ZjAuLjlhOWVhZTkzZjY5YzdmYWFhZGYyYjI1YzdkMjZhYTk5YTZkNTg4YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNjgsNiArMTY4
LDEwIEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUubHV0LmggXAogICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBc
CiAgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bFNl
Z21lbnRJdGVyYXRvclByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bFNlZ21lbnRlckNvbnN0cnVj
dG9yLmx1dC5oIFwKKyAgICBJbnRsU2VnbWVudGVyUHJvdG90eXBlLmx1dC5oIFwKKyAgICBJbnRs
U2VnbWVudHNQcm90b3R5cGUubHV0LmggXAogICAgIEpTRGF0YVZpZXdQcm90b3R5cGUubHV0Lmgg
XAogICAgIEpTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKICAgICBKU0ludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjBjMDVlMDIz
ZTk3MWQ0YzcyYzQ1MzM4MmVjOWFmYjkzZWIxMjhlNy4uOTkyZWVkZGJhNDUyYTJkMTU5NjBlZTQy
M2EwMjUwMGYxMjBjNWExZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODQs
NiArMTc4NCwxOCBAQAogCQlERTI2RTkwMzFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1
dGFibGVDcmVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9y
LmggKi87IH07CiAJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMjRB
OEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8q
IE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTMwNzE3ODMyNEM3ODI3MTAwREYwNjQ0IC8qIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEz
QkY4ODUwMjQ0ODBCRTEwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmggKi87IH07
CisJCUUzMDcxNzg0MjRDNzgyNzcwMERGMDY0NCAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuaCAqLzsgfTsKKwkJRTMwNzE3ODUyNEM3ODI3OTAwREYwNjQ0IC8qIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzQkY4ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0UHJvdG90eXBlLmggKi87IH07CisJCUUzMDcxNzg2MjRDNzgyN0MwMERGMDY0NCAvKiBJ
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMDcxNzdEMjRDNzgyNDYwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVy
Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTMwNzE3ODcyNEM3ODI3RTAwREYwNjQ0IC8qIEludGxT
ZWdtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMDcxNzgxMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyLmggKi87IH07CisJCUUz
MDcxNzg4MjRDNzgyODEwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzA3MTc3RjI0Qzc4MjQ3
MDBERjA2NDQgLyogSW50bFNlZ21lbnRlclByb3RvdHlwZS5oICovOyB9OworCQlFMzA3MTc4OTI0
Qzc4Mjg2MDBERjA2NDQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RDVGQjE4RDIwNzQ0QUU4MDA1RERG
NjQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggKi87IH07CisJCUUzMDcxNzhBMjRDNzgy
OEMwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOTAyMDc0NEJGMTAwNURERjY0
IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi87IH07CisJCUUzMDcxNzhCMjRDNzgy
OEYwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMTkyMjA3NDRCRjIwMDVEREY2NCAvKiBJbnRsUGx1
cmFsUnVsZXMuaCAqLzsgfTsKKwkJRTMwNzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxMb2Nh
bGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEzQUZGOTMwMjQ1QTNDRkMwMEM5QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi87
IH07CisJCUUzMDcxNzhEMjRDNzgyOUEwMERGMDY0NCAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJD
MjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTMw
NzE3OEUyNEM3ODI5RDAwREYwNjQ0IC8qIEludGxMb2NhbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJ
bnRsTG9jYWxlLmggKi87IH07CiAJCUUzMTE3OUFBMjI4ODM4NjEwMDUxNEIyQyAvKiBTeW1ib2xU
YWJsZU9yU2NvcGVEZXB0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8qIFN5bWJvbFRhYmxlT3JTY29wZURl
cHRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVDNUZFMDgwMDA2QTIx
OCAvKiBET01Bbm5vdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTMxNjE4MTUxRUM1RkUyNzAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdl
dHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMxNjE4MTIxRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xODcx
LDYgKzE4ODMsMTAgQEAKIAkJRTNEMzUxNUYyNDFCODlENzAwOERDMTZFIC8qIE1hcmtlZEpTVmFs
dWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oICov
OyB9OwogCQlFM0Q4Nzc3NDFFNjVDMEEwMDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDg3NzcyMUU2NUMw
ODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oICovOyB9OwogCQlFM0VFMTM3NjIxRkJENDM1
MDBEODNDNEIgLyogRXJyb3JUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0VFMTM3NDIxRkJENDM0MDBEODNDNEIgLyogRXJyb3JUeXBlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNGMjE5Mzcy
NEM3ODgyRjAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjIxOTMxMjRDNzg4MjkwMDNBRTQ1MyAv
KiBJbnRsU2VnbWVudEl0ZXJhdG9yLmggKi87IH07CisJCUUzRjIxOTM4MjRDNzg4MzEwMDNBRTQ1
MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyMTkyRjI0Qzc4ODI5MDAzQUU0NTMgLyogSW50
bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oICovOyB9OworCQlFM0YyMTkzOTI0Qzc4ODM0MDAz
QUU0NTMgLyogSW50bFNlZ21lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0YyMTkzMzI0Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNlZ21lbnRzLmgg
Ki87IH07CisJCUUzRjIxOTNBMjRDNzg4MzYwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjIx
OTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuaCAqLzsgfTsKIAkJ
RTNGMjNBN0YxRUNGMTNFRTAwOTc4RDk5IC8qIFNuaXBwZXRTbG93UGF0aENhbGxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyM0E3RTFFQ0YxM0U1
MDA5NzhEOTkgLyogU25pcHBldFNsb3dQYXRoQ2FsbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MDFFQ0YxM0Y1MDA5NzhEOTkgLyog
U25pcHBldFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNGMjNBN0QxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRSZWcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MTFFQ0YxM0ZBMDA5
NzhEOTkgLyogU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNGMjNBN0MxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRQYXJhbXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk0
OCw2ICs0OTY0LDEyIEBACiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZp
ZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJRTMwNjAxMjgyMjhGOTc4MTAwRkFBQkRGIC8qIFVu
bGlua2VkTWV0YWRhdGFUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZE1ldGFk
YXRhVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzA2Nzc5NzFCOEJD
NkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBwYXRoID0gTW9kdWxlTG9hZGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzA3MTc3RDI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzA3MTc3RTI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21l
bnRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVudGVyUHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3N0YyNEM3ODI0NzAw
REYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bFNl
Z21lbnRlclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzA3MTc4
MDI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRsU2VnbWVudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3
ODEyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bFNlZ21lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzA3MTc4MjI0Qzc4
MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzMTE3OUE5MjI4ODM4NUQwMDUxNEIyQyAvKiBTeW1ib2xUYWJsZU9yU2NvcGVE
ZXB0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzE2MTgxMDFFQzVGRTA4MDAwNkEyMTggLyogRE9NQW5u
b3RhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Bbm5vdGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTYxODExMUVDNUZFMDgwMDA2QTIx
OCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTUwOTQsNiArNTExNiwxNCBAQAogCQlFM0Q4Nzc3MjFFNjVDMDg5
MDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnl0ZWNvZGVEdW1wZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNF
RTEzNzQyMUZCRDQzNDAwRDgzQzRCIC8qIEVycm9yVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFcnJvclR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNFRTEzNzUyMUZCRDQzNDAwRDgzQzRCIC8qIEVycm9yVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvclR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0YyMTkyRjI0Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRv
clByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIxOTMwMjRDNzg4MjkwMDNBRTQ1
MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxTZWdt
ZW50SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0YyMTkzMTI0
Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRsU2VnbWVudEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIx
OTMyMjRDNzg4MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNGMjE5MzMyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRsU2VnbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTNGMjE5MzQyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnRsU2VnbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFM0YyMTkzNTI0Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjE5MzYyNEM3ODgyQjAwM0FFNDUz
IC8qIEludGxTZWdtZW50c1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsU2VnbWVudHNQ
cm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGMjNBN0IxRUNGMTNF
NTAwOTc4RDk5IC8qIFNuaXBwZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U25pcHBldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyM0E3QzFFQ0YxM0U1
MDA5NzhEOTkgLyogU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTbmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRjIz
QTdEMUVDRjEzRTUwMDk3OEQ5OSAvKiBTbmlwcGV0UmVnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNuaXBwZXRSZWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTczMTUsNiArNzM0NSwyMCBAQAogCQkJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKIAkJCQlBM0JGODg0QjI0NDgwQkRF
MDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJ
QTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5
cGUuaCAqLywKKwkJCQlFMzA3MTc4MDI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlci5j
cHAgKi8sCisJCQkJRTMwNzE3ODEyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIuaCAq
LywKKwkJCQlFMzA3MTc4MjI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVj
dG9yLmNwcCAqLywKKwkJCQlFMzA3MTc3RDI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21lbnRl
ckNvbnN0cnVjdG9yLmggKi8sCisJCQkJRTMwNzE3N0UyNEM3ODI0NjAwREYwNjQ0IC8qIEludGxT
ZWdtZW50ZXJQcm90b3R5cGUuY3BwICovLAorCQkJCUUzMDcxNzdGMjRDNzgyNDcwMERGMDY0NCAv
KiBJbnRsU2VnbWVudGVyUHJvdG90eXBlLmggKi8sCisJCQkJRTNGMjE5MzAyNEM3ODgyOTAwM0FF
NDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuY3BwICovLAorCQkJCUUzRjIxOTMxMjRDNzg4Mjkw
MDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yLmggKi8sCisJCQkJRTNGMjE5MzUyNEM3ODgy
QTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCUUz
RjIxOTJGMjRDNzg4MjkwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgg
Ki8sCisJCQkJRTNGMjE5MzQyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5jcHAgKi8s
CisJCQkJRTNGMjE5MzMyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oICovLAorCQkJ
CUUzRjIxOTMyMjRDNzg4MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwICov
LAorCQkJCUUzRjIxOTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUu
aCAqLywKIAkJCQkwRjI3NUYyQzFFQ0UwNzk2MDA2MjBENDcgLyogSW50cmluc2ljLmNwcCAqLywK
IAkJCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8sCiAJCQkJOEI5
RjZENTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCAqLywKQEAgLTk3ODYsNiAr
OTgzMCw5IEBACiAJCQkJRTM2NUYzM0EyNEFBNjIzOTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTNDMTIxMjRBQTRDQjcw
MDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzY1RjMzQjI0QUE2MjNCMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5s
dXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzhFMjRDNzgyOUQwMERGMDY0NCAvKiBJbnRs
TG9jYWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4RDI0Qzc4MjlBMDBERjA2NDQgLyog
SW50bExvY2FsZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4QzI0Qzc4
Mjk4MDBERjA2NDQgLyogSW50bExvY2FsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAv
KiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTk3
OTMsNiArOTg0MCwxOSBAQAogCQkJCUExMjU4NDZGMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyQkJGRjIxQjA0
NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOEVCRTI0
MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTMwNzE3OEIyNEM3ODI4RjAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTMwNzE3OEEyNEM3ODI4QzAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxlc0Nv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4OTI0Qzc4Mjg2MDBERjA2NDQg
LyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4
MzI0Qzc4MjcxMDBERjA2NDQgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTMwNzE3ODQyNEM3ODI3NzAwREYwNjQ0IC8qIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3ODUyNEM3ODI3OTAwREYw
NjQ0IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzMDcxNzg3MjRDNzgyN0UwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFMzA3MTc4NjI0Qzc4MjdDMDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4ODI0Qzc4MjgxMDBERjA2NDQgLyog
SW50bFNlZ21lbnRlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNGMjE5MzcyNEM3
ODgyRjAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzRjIxOTM4MjRDNzg4MzEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0YyMTkzOTI0Qzc4ODM0MDAzQUU0NTMgLyogSW50bFNl
Z21lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0YyMTkzQTI0Qzc4ODM2MDAzQUU0NTMgLyog
SW50bFNlZ21lbnRzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjBCRDgwMTE0OEVB
NkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzRFMDM1NDFF
NTNCRDI5MDAyMTNGNjQgLyogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZEQ0UxMzIxRkIxMURBNDAwNkYzOTAxIC8qIElzb0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDU5
MGRiNDI4NzU0MWFjNGUzMTdlYmRiZGZkMjc2ZGE1NzM0MmNlN2UuLjI4NDY1ZDYyZmYzYWY0NjYw
OGNlMmJlMTUwY2FjYjcyNzhhMGRiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAg
LTgzMSw2ICs4MzEsMTMgQEAgcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCiBy
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCiBydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5jcHAKK3J1bnRpbWUvSW50
bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAK
K3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9JbnRsU2VnbWVu
dGVyUHJvdG90eXBlLmNwcAorcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCitydW50aW1lL0ludGxT
ZWdtZW50c1Byb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAogcnVu
dGltZS9JdGVyYXRvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSlNBcnJheS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGNh
MTlkMDJiZTE3Y2EwNjQwNmEzOGU2MTY3NDExZTMwNWE0ZTUwNGYuLjIwN2IzMGY3NzI2NDNmN2U4
N2RlZDUwNGFkMDg2Zjc5NDliY2FmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtNTQsNiArNTQsNyBAQAogICAgIG1hY3Jv
KFJlZ0V4cCkgXAogICAgIG1hY3JvKFJlbGF0aXZlVGltZUZvcm1hdCkgXAogICAgIG1hY3JvKFJl
bW90ZVBsYXliYWNrKSBcCisgICAgbWFjcm8oU2VnbWVudGVyKSBcCiAgICAgbWFjcm8oU2V0KSBc
CiAgICAgbWFjcm8oU2hhcmVkQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhTdHJpbmcpIFwKQEAg
LTExOSw2ICsxMjAsNyBAQAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKGdsb2JhbCkgXAog
ICAgIG1hY3JvKGdvKSBcCisgICAgbWFjcm8oZ3JhbnVsYXJpdHkpIFwKICAgICBtYWNybyhncm91
cHMpIFwKICAgICBtYWNybyhoYXMpIFwKICAgICBtYWNybyhoYXNPd25Qcm9wZXJ0eSkgXApAQCAt
MTM5LDYgKzE0MSw3IEBACiAgICAgbWFjcm8oaXNQcm90b3R5cGVPZikgXAogICAgIG1hY3JvKGlz
VmlldykgXAogICAgIG1hY3JvKGlzV2F0Y2hwb2ludCkgXAorICAgIG1hY3JvKGlzV29yZExpa2Up
IFwKICAgICBtYWNybyhqZXR0aXNvblJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKICAgICBt
YWNybyhsYW5ndWFnZSkgXApAQCAtMTc2LDYgKzE3OSw3IEBACiAgICAgbWFjcm8ocmVzb2x2ZSkg
XAogICAgIG1hY3JvKHNjcmlwdCkgXAogICAgIG1hY3JvKHNlY29uZCkgXAorICAgIG1hY3JvKHNl
Z21lbnQpIFwKICAgICBtYWNybyhzZW5zaXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkgXAogICAg
IG1hY3JvKHNpemUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAKaW5kZXggYzVhNjA4OTk4YjY2MDY5NGYyY2E4YzBhMjM3YzZkZjUzMGIwYmY1OC4uNjAx
MzQzMTc2MjI4ZGQzNTBlZGRiMTI2ZGJmMWYzOWIwYmFhOGJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTQ4LDggKzQ4LDEyIEBACiAjaW5j
bHVkZSAiSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRs
U2VnbWVudGVyQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVyUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNs
dWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KICNpbmNsdWRl
IDx1bmljb2RlL3VmaWVsZHBvc2l0ZXIuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KQEAg
LTExNiw2ICsxMjAsMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPnJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSgp
LT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVT
ZWdtZW50ZXJDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgSW50
bE9iamVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4ob2JqZWN0KTsKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW50bE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZt
KTsKKyAgICByZXR1cm4gSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxT
ZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsU2VnbWVudGVyUHJv
dG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5zZWdtZW50ZXJTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90
eXBlT2JqZWN0KCkpKTsKK30KKwogfQogCiAjaW5jbHVkZSAiSW50bE9iamVjdC5sdXQuaCIKQEAg
LTE2OSw2ICsxODAsOCBAQCB2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqKQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY3JlYXRlRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IpOwogI2VuZGlmCisgICAgaWYgKE9wdGlvbnM6OnVzZUludGxTZWdtZW50
ZXIoKSkKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPlNlZ21lbnRlciwgY3JlYXRlU2VnbWVudGVyQ29uc3RydWN0b3Iodm0sIHRoaXMpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAK
IFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0yODEsNiArMjk0LDI3
IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygp
CiAgICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXM7CiB9CiAKK2NvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgaW50bFNlZ21lbnRlckF2YWlsYWJsZUxvY2FsZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7CisgICAgSGFz
aFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5n
ZXQoKTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBz
dGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKKyAgICAgICAgQVNTRVJUKGF2YWls
YWJsZUxvY2FsZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgY29uc3RleHByIGJvb2wgaXNJbW1vcnRh
bCA9IHRydWU7CisgICAgICAgIGludDMyX3QgY291bnQgPSB1YnJrX2NvdW50QXZhaWxhYmxlKCk7
CisgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAg
ICAgIFN0cmluZyBsb2NhbGUgPSBsYW5ndWFnZVRhZ0ZvckxvY2FsZUlEKHVicmtfZ2V0QXZhaWxh
YmxlKGkpLCBpc0ltbW9ydGFsKTsKKyAgICAgICAgICAgIGlmIChsb2NhbGUuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5h
ZGQobG9jYWxlKTsKKyAgICAgICAgICAgIGFkZFNjcmlwdGxlc3NMb2NhbGVJZk5lZWRlZChhdmFp
bGFibGVMb2NhbGVzLCBsb2NhbGUpOworICAgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJuIGF2
YWlsYWJsZUxvY2FsZXM7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZ2V0
b3B0aW9uCiBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCAwYjBhN2JiNmJhNDFj
MWVmMjkxYTI4MjIzYjg1MDM4MTg3Zjc2OGQ2Li41ZWQ0ZDE1ZTYwNDZmMDFjZWIyYjU3MjlhYmYw
MmY4NjA1MWU3MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIEludGxPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiBTdHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCopOwog
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOwogY29uc3QgSGFz
aFNldDxTdHJpbmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCk7Citjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGludGxTZWdtZW50ZXJBdmFpbGFibGVMb2NhbGVzKCk7CiBpbmxpbmUgY29u
c3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkg
eyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgaW50bERpc3BsYXlOYW1lc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRs
QXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRs
TnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2Nh
bGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50SXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNl
Z21lbnRJdGVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU1YzZmMGQ3OWJjMmViZGI0OTFiNzFjOTNk
MWJiODhmZTM3Y2RkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5o
IgorCisjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8dW5pY29kZS91
Y3Vyci5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8g
SW50bFNlZ21lbnRJdGVyYXRvcjo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsU2VnbWVudEl0ZXJhdG9y
KSB9OworCitJbnRsU2VnbWVudEl0ZXJhdG9yKiBJbnRsU2VnbWVudEl0ZXJhdG9yOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJh
dG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+JiYgc2VnbWVudGVyLCBCb3g8VmVjdG9yPFVDaGFy
Pj4gYnVmZmVyLCBKU1N0cmluZyogc3RyaW5nLCBJbnRsU2VnbWVudGVyOjpHcmFudWxhcml0eSBn
cmFudWxhcml0eSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbnRsU2VnbWVudEl0ZXJhdG9yPih2bS5oZWFwKSkgSW50bFNlZ21lbnRJdGVyYXRvcih2
bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHNlZ21lbnRlciksIFdURk1vdmUoYnVmZmVyKSwgZ3JhbnVs
YXJpdHkpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cmluZyk7CisgICAgcmV0
dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsU2VnbWVudEl0ZXJhdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Cit9CisKK0ludGxTZWdtZW50SXRlcmF0b3I6OkludGxTZWdtZW50SXRlcmF0b3IoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBV
QnJlYWtJdGVyYXRvckRlbGV0ZXI+JiYgc2VnbWVudGVyLCBCb3g8VmVjdG9yPFVDaGFyPj4mJiBi
dWZmZXIsIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9zZWdtZW50ZXIoV1RGTW92ZShzZWdtZW50ZXIpKQor
ICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQorICAgICwgbV9ncmFudWxhcml0eShncmFu
dWxhcml0eSkKK3sKK30KKwordm9pZCBJbnRsU2VnbWVudEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTU3RyaW5nKiBzdHJpbmcpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgbV9zdHJpbmcuc2V0
KHZtLCB0aGlzLCBzdHJpbmcpOworfQorCit2b2lkIEludGxTZWdtZW50SXRlcmF0b3I6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxTZWdtZW50SXRlcmF0b3IqPihjZWxsKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fc3RyaW5nKTsKK30KKworSlNPYmplY3QqIEludGxTZWdtZW50SXRl
cmF0b3I6Om5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgaW50MzJfdCBzdGFydEluZGV4ID0gdWJya19jdXJyZW50KG1fc2VnbWVu
dGVyLmdldCgpKTsKKyAgICBpbnQzMl90IGVuZEluZGV4ID0gdWJya19uZXh0KG1fc2VnbWVudGVy
LmdldCgpKTsKKyAgICBpZiAoZW5kSW5kZXggPT0gVUJSS19ET05FKQorICAgICAgICByZXR1cm4g
Y3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoZ2xvYmFsT2JqZWN0LCBqc1VuZGVmaW5lZCgpLCB0
cnVlKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gSW50bFNlZ21lbnRlcjo6Y3JlYXRlU2VnbWVu
dERhdGFPYmplY3QoZ2xvYmFsT2JqZWN0LCBtX3N0cmluZy5nZXQoKSwgc3RhcnRJbmRleCwgZW5k
SW5kZXgsICptX3NlZ21lbnRlciwgbV9ncmFudWxhcml0eSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKyAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBvYmplY3QsIGZhbHNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGRiOTYwM2IyNjg4MmQyN2RhYmU2MjAzYWMwNzc3MzVjMzU3NDM2MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdt
ZW50SXRlcmF0b3IuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBJbnRsU2VnbWVudEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxJbnRs
U2VnbWVudEl0ZXJhdG9yKj4oY2VsbCktPkludGxTZWdtZW50SXRlcmF0b3I6On5JbnRsU2VnbWVu
dEl0ZXJhdG9yKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bFNlZ21lbnRJdGVyYXRvclNwYWNl
PG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIEludGxTZWdtZW50SXRlcmF0b3IqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFr
SXRlcmF0b3JEZWxldGVyPiYmLCBCb3g8VmVjdG9yPFVDaGFyPj4sIEpTU3RyaW5nKiwgSW50bFNl
Z21lbnRlcjo6R3JhbnVsYXJpdHkpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87
CisKKyAgICBKU09iamVjdCogbmV4dChKU0dsb2JhbE9iamVjdCopOworCisgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcml2YXRlOgorICAg
IEludGxTZWdtZW50SXRlcmF0b3IoVk0mLCBTdHJ1Y3R1cmUqLCBzdGQ6OnVuaXF1ZV9wdHI8VUJy
ZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4mJiwgQm94PFZlY3RvcjxVQ2hhcj4+
JiYsIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSlNTdHJpbmcqKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwg
VUJyZWFrSXRlcmF0b3JEZWxldGVyPiBtX3NlZ21lbnRlcjsKKyAgICBCb3g8VmVjdG9yPFVDaGFy
Pj4gbV9idWZmZXI7CisgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX3N0cmluZzsKKyAgICBJ
bnRsU2VnbWVudGVyOjpHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5OworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
U2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MDA5Yzky
ZjUzNTk5Y2M3ZDgxZDBhY2Q3ZDUzMDZhN2ZkNjFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNw
cApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkludGxT
ZWdtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsU2VnbWVudEl0
ZXJhdG9yUHJvdG90eXBlRnVuY05leHQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwor
fQorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJTZWdtZW50IFN0cmluZyBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8s
ICZzZWdtZW50SXRlcmF0b3JQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIElu
dGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBzZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgICAgICAgIEludGxTZWdtZW50SXRlcmF0b3JQcm90
b3R5cGVGdW5jTmV4dCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyov
CisKK0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUqIEludGxTZWdtZW50SXRlcmF0b3JQcm90
b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8q
IG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmpl
Y3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCitJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpJbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
aW50bC1zZWdtZW50ZXIvI3NlYy0lc2VnbWVudGl0ZXJhdG9ycHJvdG90eXBlJS5uZXh0CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGVGdW5j
TmV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogc2VnbWVudEl0ZXJhdG9yID0ganNE
eW5hbWljQ2FzdDxJbnRsU2VnbWVudEl0ZXJhdG9yKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghc2VnbWVudEl0ZXJhdG9yKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5TZWdtZW50SXRlcmF0b3IucHJvdG90
eXBlLm5leHQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgU2VnbWVudEl0ZXJhdG9yIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRJdGVyYXRvci0+bmV4dChnbG9iYWxPYmplY3QpKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI1M2NiMjI1ZTJhOGUwMGYxZTUxNzIwMmE1M2M4MTEyYWNlOWYwYzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9y
UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxT
ZWdtZW50SXRlcmF0b3JQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEludGxTZWdtZW50SXRl
cmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisK
KyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWNhMTlmZGVlN2NiODhlZGIyODc2
YjcyMmY2MzdlYWUzYmRiOWU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorCisj
aW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyOjpzX2lu
Zm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxTZWdtZW50ZXIpIH07CisKK0ludGxTZWdtZW50ZXIqIEludGxTZWdt
ZW50ZXI6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8q
IG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50ZXI+KHZtLmhl
YXApKSBJbnRsU2VnbWVudGVyKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bFNlZ21l
bnRlcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsU2VnbWVudGVyOjpJbnRsU2VnbWVudGVyKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9
CisKK3ZvaWQgSW50bFNlZ21lbnRlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkp
OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1zZWdtZW50ZXIvI3NlYy1p
bnRsLnNlZ21lbnRlcgordm9pZCBJbnRsU2VnbWVudGVyOjppbml0aWFsaXplU2VnbWVudGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRp
b25zVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gcmVxdWVzdGVkTG9j
YWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNPYmplY3QqIG9w
dGlvbnM7CisgICAgaWYgKG9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBvcHRp
b25zID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlw
ZU9iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlv
bnNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIFJlc29sdmVMb2NhbGVPcHRpb25zIGxv
Y2FsZU9wdGlvbnM7CisKKyAgICBMb2NhbGVNYXRjaGVyIGxvY2FsZU1hdGNoZXIgPSBpbnRsT3B0
aW9uPExvY2FsZU1hdGNoZXI+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1l
cy0+bG9jYWxlTWF0Y2hlciwgeyB7ICJsb29rdXAiX3MsIExvY2FsZU1hdGNoZXI6Okxvb2t1cCB9
LCB7ICJiZXN0IGZpdCJfcywgTG9jYWxlTWF0Y2hlcjo6QmVzdEZpdCB9IH0sICJsb2NhbGVNYXRj
aGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0IGZpdFwiIl9zLCBMb2NhbGVN
YXRjaGVyOjpCZXN0Rml0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworCisgICAgYXV0byBsb2NhbGVEYXRhID0gW10oY29uc3QgU3RyaW5nJiwgUmVsZXZhbnRFeHRl
bnNpb25LZXkpIC0+IFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
OworCisgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxTZWdtZW50ZXJBdmFpbGFibGVM
b2NhbGVzKCk7CisgICAgYXV0byByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0
LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBsb2NhbGVNYXRjaGVyLCBsb2Nh
bGVPcHRpb25zLCB7IH0sIGxvY2FsZURhdGEpOworCisgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5s
b2NhbGU7CisgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgeworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudGVy
IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX2dyYW51bGFyaXR5ID0gaW50bE9wdGlvbjxHcmFudWxhcml0eT4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ncmFudWxhcml0eSwgeyB7ICJncmFwaGVtZSJfcywg
R3JhbnVsYXJpdHk6OkdyYXBoZW1lIH0sIHsgIndvcmQiX3MsIEdyYW51bGFyaXR5OjpXb3JkIH0s
IHsgInNlbnRlbmNlIl9zLCBHcmFudWxhcml0eTo6U2VudGVuY2UgfSB9LCAiZ3JhbnVsYXJpdHkg
bXVzdCBiZSBlaXRoZXIgXCJncmFwaGVtZVwiLCBcIndvcmRcIiwgb3IgXCJzZW50ZW5jZVwiIl9z
LCBHcmFudWxhcml0eTo6R3JhcGhlbWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisKKyAgICBVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSA9IFVCUktfQ0hBUkFDVEVS
OworICAgIHN3aXRjaCAobV9ncmFudWxhcml0eSkgeworICAgIGNhc2UgR3JhbnVsYXJpdHk6Okdy
YXBoZW1lOgorICAgICAgICB0eXBlID0gVUJSS19DSEFSQUNURVI7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgR3JhbnVsYXJpdHk6OldvcmQ6CisgICAgICAgIHR5cGUgPSBVQlJLX1dPUkQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhbnVsYXJpdHk6OlNlbnRlbmNlOgorICAgICAgICB0
eXBlID0gVUJSS19TRU5URU5DRTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgbV9zZWdtZW50ZXIgPSBzdGQ6OnVuaXF1
ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4odWJya19vcGVuKHR5
cGUsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIDAsICZzdGF0dXMpKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRlciJfcyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLXNl
Z21lbnRlci8jc2VjLWludGwuc2VnbWVudGVyLnByb3RvdHlwZS5zZWdtZW50CitKU1ZhbHVlIElu
dGxTZWdtZW50ZXI6OnNlZ21lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBzdHJpbmdWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNTdHJp
bmcqIGpzU3RyaW5nID0gc3RyaW5nVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFN0cmluZyBzdHJpbmcgPSBqc1N0
cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gQm94PFZlY3RvcjxVQ2hh
cj4+OjpjcmVhdGUoc3RyaW5nLmNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkpOwor
CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBzZWdtZW50
ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRl
cj4odWJya19zYWZlQ2xvbmUobV9zZWdtZW50ZXIuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsICZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRz
Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgdWJya19zZXRUZXh0KHNlZ21l
bnRlci5nZXQoKSwgdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLT5kYXRhKCksIHVwY29udmVydGVkQ2hh
cmFjdGVycy0+c2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBp
bml0aWFsaXplIFNlZ21lbnRzIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICByZXR1cm4gSW50bFNlZ21lbnRzOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c2VnbWVudHNT
dHJ1Y3R1cmUoKSwgV1RGTW92ZShzZWdtZW50ZXIpLCBXVEZNb3ZlKHVwY29udmVydGVkQ2hhcmFj
dGVycyksIGpzU3RyaW5nLCBtX2dyYW51bGFyaXR5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtaW50bC5zZWdtZW50ZXIucHJvdG90eXBlLnJl
c29sdmVkb3B0aW9ucworSlNPYmplY3QqIEludGxTZWdtZW50ZXI6OnJlc29sdmVkT3B0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkpOworICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Z3JhbnVsYXJpdHksIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgZ3JhbnVsYXJpdHlTdHJpbmcobV9ncmFudWxhcml0eSkpKTsKKyAgICByZXR1cm4g
b3B0aW9uczsKK30KKworQVNDSUlMaXRlcmFsIEludGxTZWdtZW50ZXI6OmdyYW51bGFyaXR5U3Ry
aW5nKEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQoreworICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkp
IHsKKyAgICBjYXNlIEdyYW51bGFyaXR5OjpHcmFwaGVtZToKKyAgICAgICAgcmV0dXJuICJncmFw
aGVtZSJfczsKKyAgICBjYXNlIEdyYW51bGFyaXR5OjpXb3JkOgorICAgICAgICByZXR1cm4gIndv
cmQiX3M7CisgICAgY2FzZSBHcmFudWxhcml0eTo6U2VudGVuY2U6CisgICAgICAgIHJldHVybiAi
c2VudGVuY2UiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworSlNPYmplY3QqIEludGxTZWdtZW50ZXI6OmNy
ZWF0ZVNlZ21lbnREYXRhT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3Ry
aW5nKiBzdHJpbmcsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJyZWFr
SXRlcmF0b3ImIHNlZ21lbnRlciwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5zZWdtZW50LCBqc1N1YnN0cmluZyhnbG9iYWxPYmplY3QsIHN0cmlu
Zywgc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4KSk7CisgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmluZGV4LCBqc051bWJlcihzdGFydEluZGV4KSk7
CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlucHV0LCBzdHJp
bmcpOworICAgIGlmIChncmFudWxhcml0eSA9PSBJbnRsU2VnbWVudGVyOjpHcmFudWxhcml0eTo6
V29yZCkgeworICAgICAgICBpbnQzMl90IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0dXMo
JnNlZ21lbnRlcik7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5pc1dvcmRMaWtlLCBqc0Jvb2xlYW4oIShydWxlU3RhdHVzID49IFVCUktfV09SRF9OT05F
ICYmIHJ1bGVTdGF0dXMgPD0gVUJSS19XT1JEX05PTkVfTElNSVQpKSk7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMGY0MjZjNDg5NzU2
YWFkNDk3MWU2OWM2ODExOWEzZjcwZTBmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmgKQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1
ZGUgPHVuaWNvZGUvdWJyay5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJz
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCit1c2luZyBVQnJlYWtJdGVyYXRvckRlbGV0ZXIgPSBJ
Q1VEZWxldGVyPHVicmtfY2xvc2U+OworCitjbGFzcyBJbnRsU2VnbWVudGVyIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZp
bmFsT2JqZWN0OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSB0cnVlOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgewor
ICAgICAgICBzdGF0aWNfY2FzdDxJbnRsU2VnbWVudGVyKj4oY2VsbCktPkludGxTZWdtZW50ZXI6
On5JbnRsU2VnbWVudGVyKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bFNlZ21lbnRlclNwYWNl
PG1vZGU+KCk7CisgICAgfQorCisgICAgZW51bSBjbGFzcyBHcmFudWxhcml0eSA6IHVpbnQ4X3Qg
eyBHcmFwaGVtZSwgV29yZCwgU2VudGVuY2UgfTsKKworICAgIHN0YXRpYyBJbnRsU2VnbWVudGVy
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgdm9pZCBpbml0aWFsaXplU2VnbWVudGVyKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBsb2NhbGVzVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKTsKKworICAgIEpTVmFsdWUg
c2VnbWVudChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpIGNvbnN0OworICAgIEpTT2JqZWN0KiBy
ZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAgIHN0YXRpYyBKU09i
amVjdCogY3JlYXRlU2VnbWVudERhdGFPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyos
IGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJyZWFrSXRlcmF0b3ImLCBH
cmFudWxhcml0eSk7CisKK3ByaXZhdGU6CisgICAgSW50bFNlZ21lbnRlcihWTSYsIFN0cnVjdHVy
ZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHN0YXRpYyBBU0NJSUxp
dGVyYWwgZ3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkpOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVudGVyOwor
ICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsgR3Jh
bnVsYXJpdHk6OkdyYXBoZW1lIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3Ry
dWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNGQ5YmU5MTFlMGZlNDEyNzdhNjliNzcwOWFjNTNiOWVi
ZmZjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rv
ci5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50
ZXJQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bFNlZ21lbnRl
ckNvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5s
dXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVy
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnNlZ21l
bnRlckNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50ZXJDb25z
dHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHNlZ21lbnRlckNvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9y
dGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvclN1cHBvcnRl
ZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJ
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IqIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNl
Z21lbnRlclByb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxT
ZWdtZW50ZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHNlZ21lbnRlclByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxTZWdtZW50ZXIoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKKworSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpJbnRsU2Vn
bWVudGVyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSwgY2FsbEludGxTZWdtZW50ZXIsIGNvbnN0cnVjdEludGxTZWdtZW50
ZXIpCit7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNlZ21lbnRlclByb3RvdHlwZSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIlNlZ21lbnRlciJfcywgTmFtZUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNlZ21lbnRlclByb3Rv
dHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOworICAgIHNlZ21lbnRlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtSW50bC5TZWdtZW50ZXIKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgp
KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5ld1RhcmdldCA9PSBjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmplY3QtPnNlZ21lbnRlclN0cnVjdHVyZSgpCisg
ICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5ld1RhcmdldCktPnNlZ21l
bnRlclN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgSW50bFNlZ21lbnRlciogc2VnbWVudGVyID0gSW50bFNlZ21lbnRlcjo6Y3JlYXRlKHZt
LCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChzZWdtZW50ZXIpOworCisgICAgc2NvcGUucmVsZWFz
ZSgpOworICAgIHNlZ21lbnRlci0+aW5pdGlhbGl6ZVNlZ21lbnRlcihnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLlNlZ21lbnRlcgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJTZWdtZW50ZXIiKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2Vn
bWVudGVyLyNzZWMtaW50bC5zZWdtZW50ZXIuc3VwcG9ydGVkbG9jYWxlc29mCisKKyAgICAvLyAx
LiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlU2VnbWVudGVyJS5bW2F2YWlsYWJsZUxvY2FsZXNd
XS4KKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsU2Vn
bWVudGVyQXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2Fs
ZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICBWZWN0b3I8U3RyaW5n
PiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMo
YXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyhnbG9i
YWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMSkpKSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhkYmIxZjNhMWY3YjVkNmFlMmVlMDcxMjdiNTVkYTc5MDNlMzBlYjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVu
dGVyQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFNlZ21lbnRlclByb3RvdHlwZTsK
KworY2xhc3MgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9uOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgSW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsU2VnbWVudGVy
UHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0
ZToKKyAgICBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bFNlZ21lbnRlclByb3RvdHlwZSopOworfTsKK1NU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rv
ciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YmJjMzQyYjgwMjliYmFjYTUzMWM2OWY0ZDY4OWU0OTM4ZWVjYmEyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21l
bnRlclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5oIgorCisjaW5j
bHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdt
ZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRlclByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQor
CisjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJJbnRsLlNlZ21lbnRlciIsICZCYXNlOjpzX2luZm8sICZzZWdtZW50ZXJQcm90b3R5cGVUYWJs
ZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsU2VnbWVudGVyUHJvdG90eXBlKSB9
OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50ZXJQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBz
ZWdtZW50ZXJQcm90b3R5cGVUYWJsZQorICBzZWdtZW50ICAgICAgICAgIEludGxTZWdtZW50ZXJQ
cm90b3R5cGVGdW5jU2VnbWVudCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmVz
b2x2ZWRPcHRpb25zICBJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAg
ICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsU2VnbWVudGVyUHJvdG90eXBl
KiBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsU2VnbWVudGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFNlZ21lbnRlclByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1
cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKK30KKworSW50bFNlZ21lbnRlclByb3RvdHlwZTo6SW50bFNlZ21lbnRlclByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVy
aXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJ
T04oKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNz
ZWMtaW50bC5zZWdtZW50ZXIucHJvdG90eXBlLnNlZ21lbnQKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bFNlZ21lbnRlclByb3RvdHlwZUZ1bmNTZWdtZW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBzZWdtZW50ZXIgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdtZW50ZXIq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFzZWdtZW50ZXIpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNl
Z21lbnRlci5wcm90b3R5cGUuc2VnbWVudCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50ZXIiX3MpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5zZWdtZW50KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtSW50bC5TZWdtZW50ZXIucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsU2VnbWVudGVy
UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byogc2VnbWVudGVyID0ganNEeW5hbWljQ2FzdDxJbnRsU2VnbWVudGVyKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghc2VnbWVudGVyKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5TZWdtZW50ZXIucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50ZXIiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFs
T2JqZWN0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MmZkNTljZWY2YzZmMmIxNzQ3Y2I4NGE3MTljNzNjMzBiMjMxZDA2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlw
ZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsU2VnbWVudGVy
UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1By
b3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAg
eworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVu
dGVyUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2
YXRlOgorICAgIEludGxTZWdtZW50ZXJQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg3MzcxZGU4MzI0OTc0MzIzZTA4NzczZDFmMDNmMmJjMTJmOGFlNmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCkBAIC0w
LDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkludGxTZWdtZW50cy5oIgorCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNs
dWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8dW5pY29kZS91Y3Vyci5oPgor
I2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VI
ZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFNlZ21l
bnRzOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxTZWdtZW50cykgfTsKKworSW50bFNlZ21lbnRzKiBJ
bnRsU2VnbWVudHM6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzdGQ6OnVu
aXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4mJiBzZWdtZW50
ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSlNTdHJpbmcqIHN0cmluZywgSW50bFNl
Z21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgYXV0byogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRzPih2bS5oZWFwKSkgSW50bFNl
Z21lbnRzKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoc2VnbWVudGVyKSwgV1RGTW92ZShidWZmZXIp
LCBncmFudWxhcml0eSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5nKTsK
KyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50czo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCitJbnRsU2VnbWVudHM6OkludGxTZWdtZW50cyhWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9y
RGVsZXRlcj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSW50bFNl
Z21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCisgICAgLCBtX3NlZ21lbnRlcihXVEZNb3ZlKHNlZ21lbnRlcikpCisgICAgLCBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQorewor
fQorCit2b2lkIEludGxTZWdtZW50czo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1N0cmluZyog
c3RyaW5nKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5o
ZXJpdHModm0sIGluZm8oKSkpOworICAgIG1fc3RyaW5nLnNldCh2bSwgdGhpcywgc3RyaW5nKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtaW50
bC5zZWdtZW50ZXIucHJvdG90eXBlLmNvbnRhaW5pbmcKK0pTVmFsdWUgSW50bFNlZ21lbnRzOjpj
b250YWluaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW5kZXhWYWx1
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgZG91YmxlIHZhbHVlID0gaW5kZXhWYWx1
ZS50b0ludGVnZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSBtX2J1ZmZlci0+c2l6ZSgp
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbnQzMl90IGluZGV4ID0gdG9J
bnQzMih2YWx1ZSk7CisKKyAgICAvLyBUaGUgcmVzdWx0IG9mIHVicmtfcHJlY2VkaW5nIGlzIGFs
d2F5cyAqc21hbGxlciogdGhhbiBvZmZzZXQsIG9yIFVCUktfRE9ORS4gSW4gdGhpcyBjYXNlLCB3
ZSBzaG91bGQgc2V0IHNjYW4gcG9zaXRpb24gd2l0aCBgaW5kZXggKyAxYC4KKyAgICAvLyBFdmVu
IGlmIGluZGV4ICsgMSBleGNlZWRzIGxlbmd0aCBvZiBzdHJpbmcgYnkgMSwgdGhpcyBpcyBkZXNp
cmFibGUgaWYgd2Ugd2FudCB0byBzY2FuIHRoZSBsYXN0IHNlZ21lbnQuCisgICAgaW50MzJfdCBz
dGFydEluZGV4ID0gdWJya19wcmVjZWRpbmcobV9zZWdtZW50ZXIuZ2V0KCksIGluZGV4ICsgMSk7
CisgICAgaWYgKHN0YXJ0SW5kZXggPT0gVUJSS19ET05FKQorICAgICAgICBzdGFydEluZGV4ID0g
MDsKKyAgICAvLyBUaGUgcmVzdWx0IG9mIHVicmtfZm9sbG93aW5nIGlzIGFsd2F5cyBncmVhdGVy
IHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuIFNjYW4gcG9zaXRpb24gc2hvdWxkIGJlIGBpbmRl
eGAuCisgICAgaW50MzJfdCBlbmRJbmRleCA9IHVicmtfZm9sbG93aW5nKG1fc2VnbWVudGVyLmdl
dCgpLCBpbmRleCk7CisgICAgaWYgKGVuZEluZGV4ID09IFVCUktfRE9ORSkKKyAgICAgICAgZW5k
SW5kZXggPSBtX2J1ZmZlci0+c2l6ZSgpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJl
dHVybiBJbnRsU2VnbWVudGVyOjpjcmVhdGVTZWdtZW50RGF0YU9iamVjdChnbG9iYWxPYmplY3Qs
IG1fc3RyaW5nLmdldCgpLCBzdGFydEluZGV4LCBlbmRJbmRleCwgKm1fc2VnbWVudGVyLCBtX2dy
YW51bGFyaXR5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVu
dGVyLyNzZWMtJXNlZ21lbnRzcHJvdG90eXBlJS1AQGl0ZXJhdG9yCitKU09iamVjdCogSW50bFNl
Z21lbnRzOjpjcmVhdGVTZWdtZW50SXRlcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisgICAgYXV0byBzZWdtZW50ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRl
cmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4odWJya19zYWZlQ2xvbmUobV9zZWdtZW50ZXIu
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRJdGVyYXRvciJfcyk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHVicmtfZmlyc3Qoc2VnbWVudGVyLmdldCgpKTsKKyAgICBy
ZXR1cm4gSW50bFNlZ21lbnRJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnNlZ21l
bnRJdGVyYXRvclN0cnVjdHVyZSgpLCBXVEZNb3ZlKHNlZ21lbnRlciksIG1fYnVmZmVyLCBtX3N0
cmluZy5nZXQoKSwgbV9ncmFudWxhcml0eSk7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRzOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsU2VnbWVudHMqPihjZWxsKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fc3RyaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNjNjNzNi
YTQyNTY4MTU5ZTBhYTU5YjE2NjM4ZTU4NjczMzg1ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuaApAQCAtMCwwICsxLDY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsU2VnbWVudHMgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxP
YmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRy
dWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAg
ICAgIHN0YXRpY19jYXN0PEludGxTZWdtZW50cyo+KGNlbGwpLT5JbnRsU2VnbWVudHM6On5JbnRs
U2VnbWVudHMoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsU2VnbWVudHNTcGFjZTxtb2RlPigp
OworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudHMqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSosIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVy
PiYmLCBCb3g8VmVjdG9yPFVDaGFyPj4mJiwgSlNTdHJpbmcqLCBJbnRsU2VnbWVudGVyOjpHcmFu
dWxhcml0eSk7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTVmFs
dWUgY29udGFpbmluZyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgaW5kZXhWYWx1ZSk7CisgICAg
SlNPYmplY3QqIGNyZWF0ZVNlZ21lbnRJdGVyYXRvcihKU0dsb2JhbE9iamVjdCopOworCisgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcml2
YXRlOgorICAgIEludGxTZWdtZW50cyhWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxV
QnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPiYmLCBCb3g8VmVjdG9yPFVDaGFy
Pj4mJiwgSW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkpOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU1N0cmluZyopOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9y
LCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVudGVyOworICAgIEJveDxWZWN0b3I8VUNo
YXI+PiBtX2J1ZmZlcjsKKyAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fc3RyaW5nOworICAg
IEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzOTY1MGM0ODBjMTNjZTIyYWRk
Nzg4Y2EwOTU3YTU1NWQ0ZGJjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTAxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50
c1Byb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bFNlZ21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVyYXRvcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsU2VnbWVudHNQcm90b3R5cGUubHV0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFNlZ21lbnRzUHJvdG90eXBl
OjpzX2luZm8gPSB7ICIlU2VnbWVudHMlIiwgJkJhc2U6OnNfaW5mbywgJnNlZ21lbnRzUHJvdG90
eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFNlZ21lbnRzUHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50c1Byb3RvdHlwZS5sdXQuaAorQGJl
Z2luIHNlZ21lbnRzUHJvdG90eXBlVGFibGUKKyAgY29udGFpbmluZyAgICAgICBJbnRsU2VnbWVu
dHNQcm90b3R5cGVGdW5jQ29udGFpbmluZyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0Bl
bmQKKyovCisKK0ludGxTZWdtZW50c1Byb3RvdHlwZSogSW50bFNlZ21lbnRzUHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxJbnRsU2VnbWVudHNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudHNQcm90b3R5cGUo
dm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50c1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsU2VnbWVudHNQcm90b3R5cGU6OkludGxTZWdt
ZW50c1Byb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxTZWdtZW50c1Byb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkp
OworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBJbnRsU2VnbWVudHNQcm90b3R5cGVGdW5jSXRlcmF0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtJXNl
Z21lbnRzcHJvdG90eXBlJS5jb250YWluaW5nCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNDb250YWluaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvKiBzZWdtZW50cyA9IGpzRHluYW1pY0Nhc3Q8SW50bFNlZ21lbnRzKj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghc2VnbWVudHMpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIlU2VnbWVudHMucHJvdG90
eXBlJS5jb250YWluaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIFNlZ21lbnRzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jb250YWluaW5nKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LWludGwtc2VnbWVudGVyLyNzZWMtJXNlZ21lbnRzcHJvdG90eXBlJS1AQGl0ZXJhdG9yCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVyYXRv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogc2VnbWVudHMgPSBqc0R5bmFtaWNDYXN0
PEludGxTZWdtZW50cyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXNl
Z21lbnRzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiJVNlZ21lbnRzLnByb3RvdHlwZSVbQEBpdGVyYXRvcl0gY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgU2VnbWVudHMiX3MpOworCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudHMtPmNyZWF0
ZVNlZ21lbnRJdGVyYXRvcihnbG9iYWxPYmplY3QpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRz
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQ
cm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjQ0NGRhMTM5ZGI1OTliZTlkZDllNTBlYWExOTkyNDVl
NWE0NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRzUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEludGxTZWdtZW50c1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSW50bFNlZ21lbnRzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudHNQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRsU2VnbWVudHNQ
cm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDM5MjM1ZTIz
Y2QzNGM3MmJmMTY4NmQ2MDUzYmVhZGM1NWY3MGMzNjUuLjVhYjdmNTI4OWI0ZGE5ZWU1NTMyNzJi
MDNkOGIzOGYyYjQ1YmM5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg2LDYgKzg2LDEyIEBACiAjaW5jbHVkZSAiSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
IgogI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRsU2Vn
bWVudGVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5jbHVkZSAi
SW50bFNlZ21lbnRzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVy
LmgiCkBAIC0xMDE4LDYgKzEwMjQsMjQgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAg
ICAgICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZSA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShpbml0
LnZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5p
dC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiAg
ICAgICAgICAgICBpbml0LnNldChJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsK
ICAgICAgICAgfSk7CisgICAgbV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUuaW5pdExhdGVyKAor
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlw
ZSogc2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlID0gSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlKGluaXQudm0sIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQcm90
b3R5cGUoKSkpOworICAgICAgICAgICAgaW5pdC5zZXQoSW50bFNlZ21lbnRJdGVyYXRvcjo6Y3Jl
YXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgc2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlKSk7CisgICAgICAgIH0pOworICAgIG1fc2VnbWVudGVyU3RydWN0dXJlLmluaXRMYXRlcigK
KyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNl
Z21lbnRlclByb3RvdHlwZSA9IEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZt
LCBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICBp
bml0LnNldChJbnRsU2VnbWVudGVyOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2Jq
ZWN0LCBzZWdtZW50ZXJQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9zZWdtZW50c1N0
cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1
cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRsU2Vn
bWVudHNQcm90b3R5cGUqIHNlZ21lbnRzUHJvdG90eXBlID0gSW50bFNlZ21lbnRzUHJvdG90eXBl
OjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsU2VnbWVudHNQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0
UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxTZWdtZW50czo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgc2VnbWVudHNQcm90b3R5cGUpKTsKKyAg
ICAgICAgfSk7CiAgICAgbV9kZWZhdWx0Q29sbGF0b3IuaW5pdExhdGVyKAogICAgICAgICBbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SW50bENvbGxhdG9yPiYgaW5pdCkgewogICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpOwpAQCAtMTg1Miw2ICsxODc2LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmpl
Y3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
cGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9y
ZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVj
dC0+bV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09i
amVjdC0+bV9zZWdtZW50ZXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVj
dC0+bV9zZWdtZW50c1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKIAogICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzZWRkYWUzMjdjMmViZGY2OWIx
MzIzZjg4NjA0NGEwYjY2MDQzYTg0Li45OTllNjhiNDYwOGQ2ZWU1ZjY3YmI0ZWQ4YTA4ZmU5NTFh
ZDM2MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTMwMiw2ICszMDIsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcmVsYXRpdmVUaW1lRm9y
bWF0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJl
PiBtX3NlZ21lbnRJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9zZWdtZW50ZXJTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fc2VnbWVudHNTdHJ1Y3R1cmU7CiAKICAgICBX
cml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKICAg
ICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJGdW5jdGlvbjsK
QEAgLTgwNSw2ICs4MDgsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGx1
cmFsUnVsZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdldCh0
aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3Ry
dWN0dXJlKiBzZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3NlZ21lbnRJdGVy
YXRvclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHNlZ21lbnRlclN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fc2VnbWVudGVyU3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0
cnVjdHVyZSogc2VnbWVudHNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3NlZ21lbnRzU3RydWN0dXJl
LmdldCh0aGlzKTsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1
Z2dpbmdFbmFibGVkKGJvb2wpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVtb3RlRGVi
dWdnaW5nRW5hYmxlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKaW5kZXggZTBjNGVkNGU3YzljN2QwNjQwZTI0ZjU5MTc4M2Q1ZWI3YzZhNThm
OC4uN2FlNTZlNGZjNDUzMWVkZmVmYzRlZDQ2MDQ1OTlhYzgzYzczMWQ3NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00OTEsNiArNDkxLDcgQEAg
Y29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAg
ICB2KEJvb2wsIHVzZVdlYWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWFrUmVm
IGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgdHJ1ZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoQm9vbCwg
dXNlSW50bERpc3BsYXlOYW1lcywgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5EaXNw
bGF5TmFtZXMgY29uc3RydWN0b3IuIikgXAorICAgIHYoQm9vbCwgdXNlSW50bFNlZ21lbnRlciwg
ZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5TZWdtZW50ZXIgY29uc3RydWN0b3IuIikg
XAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWws
ICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmls
aW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0
byBiZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNlLCBO
b3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2JqZWN0
IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBmb3JjZU1pbmlW
TU1vZGUsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1pbmkgVk0gbW9k
ZSBvbi4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMWM5YTUwY2Zi
NDcxYzZiN2E5YjNmYTk2NDJhOWFkNTBkMWFhZmVhZC4uNzgxMTQxOGIxNmNhMWU1YWE0MTA0MzJh
NzFiZjdkZGM0MmM3MWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAt
NzEsNiArNzEsOSBAQAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJ
bnRsUGx1cmFsUnVsZXMuaCIKICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisj
aW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIu
aCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKICNpbmNsdWRlICJJc29IZWFwQ2VsbFR5cGUu
aCIKICNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSklUQ29k
ZS5oIgpAQCAtMzEyLDYgKzMxNSw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogICAgICwgaW50
bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTnVt
YmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4oKSkKICAgICAsIGludGxSZWxhdGl2ZVRp
bWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFJlbGF0aXZl
VGltZUZvcm1hdD4oKSkKKyAgICAsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRJdGVyYXRvcj4oKSkKKyAgICAsIGludGxT
ZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRl
cj4oKSkKKyAgICAsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxJbnRsU2VnbWVudHM+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICwgd2Vi
QXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNX
ZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKICAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKQEAg
LTE1MDgsNiArMTUxNCw5IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUuCiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCBpbnRsTnVt
YmVyRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0KQogRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCBpbnRs
UGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxSdWxlcykKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3Bh
Y2UsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlLmdl
dCgpLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZS5n
ZXQoKSwgSW50bFNlZ21lbnRlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLmdldCgpLCBJ
bnRsU2VnbWVudHMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUb1dhc21JQ0NhbGxlZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3NlbWJseUNvZGVC
bG9ja0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDow
eDlhZDk5NWNkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0NDVmZWNmZmJlN2M2
NGJjOWFiZjgwNzY0MzNmYjdkYmY4YzE0ODRiLi5hNGIzMzlhYzY2ZWM3MDA2ZjgzMDhlZmUyOTNl
MjAyYzIyNzhlYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEzMyw2ICsx
MzMsOSBAQCBjbGFzcyBJbnRsTG9jYWxlOwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNz
IEludGxQbHVyYWxSdWxlczsKIGNsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ7CitjbGFzcyBJ
bnRsU2VnbWVudEl0ZXJhdG9yOworY2xhc3MgSW50bFNlZ21lbnRlcjsKK2NsYXNzIEludGxTZWdt
ZW50czsKIGNsYXNzIEpTQVBJR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNBUElXcmFwcGVyR2xvYmFs
T2JqZWN0OwogY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0OwpAQCAtNDA3LDYgKzQxMCw5IEBAIGNs
YXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxp
bmtlZExpc3ROb2RlPFZNPiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
aW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudEl0ZXJhdG9y
SGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxT
ZWdtZW50ZXJIZWFwQ2VsbFR5cGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUNvZGVCbG9ja0hl
YXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3Nl
bWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOwpAQCAtNTY2LDYgKzU3Miw5IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFZNPiB7CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTnVt
YmVyRm9ybWF0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsUGx1cmFsUnVsZXNTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50ZXJTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50c1NwYWNlKQogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpz
VG9XYXNtSUNDYWxsZWVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
aW5kZXggYTc3ZmQ4YzY0MGE0OTY0ODI5NzdiOWJlYzI4NzZkYTM1NWUyMmFhZS4uNDI1ZDRkNThj
NWJiNTc3MjY2ZGE3M2VhYzVjYjU2OTQ5NWFhZTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcApAQCAtNDI2LDcgKzQyNiw3IEBAIGJvb2wgU3RyaW5nOjpwZXJjZW50YWdlKGludCYgcmVz
dWx0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1WZWN0b3I8VUNoYXI+IFN0cmluZzo6
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBjb25zdAorVmVjdG9yPFVDaGFyPiBTdHJp
bmc6OmNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkgY29uc3QKIHsKICAgICBWZWN0
b3I8VUNoYXI+IHJlc3VsdDsKIApAQCAtNDQxLDEzICs0NDEsMTggQEAgVmVjdG9yPFVDaGFyPiBT
dHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29uc3QKICAgICAgICAgICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYgPSBtX2ltcGwtPmNoYXJhY3RlcnMxNigpOwogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXJzMTYsIG1faW1wbC0+bGVuZ3RoKCkpOwog
ICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZCgwKTsKICAgICB9CiAKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitWZWN0b3I8VUNoYXI+IFN0cmluZzo6Y2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKSBjb25zdAoreworICAgIGF1dG8gcmVzdWx0ID0gY2hhcmFjdGVyc1dpdGhv
dXROdWxsVGVybWluYXRpb24oKTsKKyAgICByZXN1bHQuYXBwZW5kKDApOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIFN0cmluZyBTdHJpbmc6Om51bWJlcihpbnQgbnVtYmVyKQogewogICAgIHJl
dHVybiBudW1iZXJUb1N0cmluZ1NpZ25lZDxTdHJpbmc+KG51bWJlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCBmOTRlZGQ5MzkwNDQ2NTU3Zjg3NmY2MDZiYjJjNzMxZGM2OThmNjU0Li4w
ZjE2NjJkZjRiYzg0MGMzN2Q3ZmZkNzU1YWMwNWE0NTIxMDZjNzExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKQEAgLTIwMiw2ICsyMDIsNyBAQCBjbGFzcyBTdHJpbmcgZmluYWwgewogICAgIHNp
emVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSBN
YXhMZW5ndGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3Ry
aW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhvdXROdWxs
VGVybWluYXRpb24oKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIGNo
YXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxYWQzYWYzMjIyMjJhNTMzNWRi
NTg4OGIxNTFjYzkyYzg1ODNjOTQuLmVlMDQyYWZhMmM1OTUwZDhiMmU1ZmFhMzMxZmVhY2NlZWYw
NTU2NzcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDctMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgSW50bC5TZWdtZW50ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzYzOAorCisgICAgICAg
IFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1zZWdt
ZW50ZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkTm90
VGhyb3cpOgorICAgICAgICAoZnVuYyk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoK
KyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIwLTA3LTI1ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRlc3QyNjIK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtc2VnbWVudGVyLmpzIGIvSlNUZXN0cy9z
dHJlc3MvaW50bC1zZWdtZW50ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg1MDZmMzAzNTNjMDExZjRmYWY2
YmRiYjVkZmRhODM3ZDk5NWRiYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtc2VnbWVudGVyLmpzCkBAIC0wLDAgKzEsMzMzIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VJ
bnRsU2VnbWVudGVyPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkTm90VGhyb3coZnVu
YykgeworICAgIGZ1bmMoKTsKK30KKworeworICAgIHNob3VsZEJlKEludGwuU2VnbWVudGVyIGlu
c3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworICAgIHNob3VsZEJlKEludGwuU2VnbWVudGVyLmxl
bmd0aCwgMCk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLlNlZ21lbnRlciwgJ3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxk
QmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlNlZ21lbnRlciwgJ3Byb3Rv
dHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEludGwuU2VnbWVudGVyLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxl
LCBmYWxzZSk7CisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiZnIiKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShzZWdtZW50ZXIucmVzb2x2ZWRPcHRpb25zKCkp
LCBgeyJsb2NhbGUiOiJmciIsImdyYW51bGFyaXR5IjoiZ3JhcGhlbWUifWApOworICAgIHNob3Vs
ZEJlKHNlZ21lbnRlci50b1N0cmluZygpLCBgW29iamVjdCBJbnRsLlNlZ21lbnRlcl1gKTsKKyAg
ICBzaG91bGROb3RUaHJvdygoKSA9PiBuZXcgSW50bC5TZWdtZW50ZXIoKSk7Cit9CisKK3sKKyAg
ICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtncmFudWxhcml0eTog
IndvcmQifSk7CisKKyAgICBsZXQgaW5wdXQgPSAiTW9pPyAgTidlc3QtY2UgcGFzLiI7CisgICAg
bGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3Vs
dHMgPSBbCisgICAgICAgIFsgMCwgMywgIk1vaSIsIHRydWUgXSwKKyAgICAgICAgWyAzLCA0LCAi
PyIsIGZhbHNlIF0sCisgICAgICAgIFsgNCwgNiwgIiAgIiwgZmFsc2UgXSwKKyAgICAgICAgWyA2
LCAxMSwgIk4nZXN0IiwgdHJ1ZSBdLAorICAgICAgICBbIDExLCAxMiwgIi0iLCBmYWxzZSBdLAor
ICAgICAgICBbIDEyLCAxNCwgImNlIiwgdHJ1ZSBdLAorICAgICAgICBbIDE0LCAxNSwgIiAiLCBm
YWxzZSBdLAorICAgICAgICBbIDE1LCAxOCwgInBhcyIsIHRydWUgXSwKKyAgICAgICAgWyAxOCwg
MTksICIuIiwgZmFsc2UgXSwKKyAgICBdOworICAgIGxldCBjdXJzb3IgPSAwOworICAgIGZvciAo
bGV0IHtzZWdtZW50LCBpbmRleCwgaXNXb3JkTGlrZX0gb2Ygc2VnbWVudHMpIHsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IHJlc3VsdHNbY3Vyc29yKytdOworICAgICAgICBzaG91bGRCZShyZXN1bHRb
MF0sIGluZGV4KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCBpbmRleCArIHNlZ21lbnQu
bGVuZ3RoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzJdLCBzZWdtZW50KTsKKyAgICAgICAg
c2hvdWxkQmUocmVzdWx0WzNdLCBpc1dvcmRMaWtlKTsKKyAgICB9CisKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShJbnRsLlNlZ21lbnRlci5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2ZyJykpLCBg
WyJmciJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudGVyLnJlc29sdmVk
T3B0aW9ucygpKSwgYHsibG9jYWxlIjoiZnIiLCJncmFudWxhcml0eSI6IndvcmQifWApOworfQor
Cit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiZnIiLCB7Z3JhbnVs
YXJpdHk6ICJncmFwaGVtZSJ9KTsKKworICAgIGxldCBpbnB1dCA9ICJNb2k/ICBOJ2VzdC1jZSBw
YXMuIjsKKyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAg
ICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVudCwgaW5kZXgsIGlzV29yZExp
a2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAgIGxldCBjdXJyZW50ID0gY3Vyc29yKys7CisgICAg
ICAgIHNob3VsZEJlKHNlZ21lbnQsIGlucHV0W2N1cnJlbnRdKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5kZXgsIGN1cnJlbnQpOworICAgICAgICBzaG91bGRCZShpc1dvcmRMaWtlLCB1bmRlZmluZWQp
OworICAgIH0KKworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRlci5yZXNvbHZl
ZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImZyIiwiZ3JhbnVsYXJpdHkiOiJncmFwaGVtZSJ9YCk7
Cit9CisKK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJlbiIsIHtn
cmFudWxhcml0eTogInNlbnRlbmNlIn0pOworCisgICAgbGV0IGlucHV0ID0gIlBlcmZvcm1hbmNl
IGlzIGEgdG9wIHByaW9yaXR5IGZvciBXZWJLaXQuIFdlIGFkaGVyZSB0byBhIHNpbXBsZSBkaXJl
Y3RpdmUgZm9yIGFsbCB3b3JrIHdlIGRvIG9uIFdlYktpdDogVGhlIHdheSB0byBtYWtlIGEgcHJv
Z3JhbSBmYXN0ZXIgaXMgdG8gbmV2ZXIgbGV0IGl0IGdldCBzbG93ZXIuIjsKKyAgICBsZXQgc2Vn
bWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVzdWx0cyA9IFsK
KyAgICAgICAgWyAwLCA0MiwgIlBlcmZvcm1hbmNlIGlzIGEgdG9wIHByaW9yaXR5IGZvciBXZWJL
aXQuICIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDQyLCAxNjcsICJXZSBhZGhlcmUgdG8gYSBz
aW1wbGUgZGlyZWN0aXZlIGZvciBhbGwgd29yayB3ZSBkbyBvbiBXZWJLaXQ6IFRoZSB3YXkgdG8g
bWFrZSBhIHByb2dyYW0gZmFzdGVyIGlzIHRvIG5ldmVyIGxldCBpdCBnZXQgc2xvd2VyLiIsIHVu
ZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3Nl
Z21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVz
dWx0ID0gcmVzdWx0c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5k
ZXgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgp
OworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRC
ZShyZXN1bHRbM10sIGlzV29yZExpa2UpOworICAgIH0KKworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KHNlZ21lbnRlci5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwiZ3Jh
bnVsYXJpdHkiOiJzZW50ZW5jZSJ9YCk7Cit9CisKKy8vIGxhbmd1YWdlcyB3aXRob3V0IHNwYWNl
cy4KK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJqYSIsIHtncmFu
dWxhcml0eTogIndvcmQifSk7CisKKyAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lr
aS9JX0FtX2FfQ2F0CisgICAgbGV0IGlucHV0ID0gIuWQvui8qeOBr+eMq+OBp+OBguOCi+OAguWQ
jeWJjeOBr+OBvuOBoOeEoeOBhOOAguOBqeOBk+OBp+eUn+OCjOOBn+OBi+OBqOOCk+OBqOimi+W9
k+OBjOOBpOOBi+OBrOOAgiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQo
aW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgMiwgIuWQvui8qSIs
IHRydWUgXSwKKyAgICAgICAgWyAyLCAzLCAi44GvIiwgdHJ1ZSBdLAorICAgICAgICBbIDMsIDQs
ICLnjKsiLCB0cnVlIF0sCisgICAgICAgIFsgNCwgNSwgIuOBpyIsIHRydWUgXSwKKyAgICAgICAg
WyA1LCA3LCAi44GC44KLIiwgdHJ1ZSBdLAorICAgICAgICBbIDcsIDgsICLjgIIiLCBmYWxzZSBd
LAorICAgICAgICBbIDgsIDEwLCAi5ZCN5YmNIiwgdHJ1ZSBdLAorICAgICAgICBbIDEwLCAxMSwg
IuOBryIsIHRydWUgXSwKKyAgICAgICAgWyAxMSwgMTMsICLjgb7jgaAiLCB0cnVlIF0sCisgICAg
ICAgIFsgMTMsIDE1LCAi54Sh44GEIiwgdHJ1ZSBdLAorICAgICAgICBbIDE1LCAxNiwgIuOAgiIs
IGZhbHNlIF0sCisgICAgICAgIFsgMTYsIDE4LCAi44Gp44GTIiwgdHJ1ZSBdLAorICAgICAgICBb
IDE4LCAxOSwgIuOBpyIsIHRydWUgXSwKKyAgICAgICAgWyAxOSwgMjEsICLnlJ/jgowiLCB0cnVl
IF0sCisgICAgICAgIFsgMjEsIDIzLCAi44Gf44GLIiwgdHJ1ZSBdLAorICAgICAgICBbIDIzLCAy
NiwgIuOBqOOCk+OBqCIsIHRydWUgXSwKKyAgICAgICAgWyAyNiwgMjgsICLopovlvZMiLCB0cnVl
IF0sCisgICAgICAgIFsgMjgsIDI5LCAi44GMIiwgdHJ1ZSBdLAorICAgICAgICBbIDI5LCAzMCwg
IuOBpCIsIHRydWUgXSwKKyAgICAgICAgWyAzMCwgMzEsICLjgYsiLCB0cnVlIF0sCisgICAgICAg
IFsgMzEsIDMyLCAi44GsIiwgdHJ1ZSBdLAorICAgICAgICBbIDMyLCAzMywgIuOAgiIsIGZhbHNl
IF0sCisgICAgXTsKKyAgICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVudCwg
aW5kZXgsIGlzV29yZExpa2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAgIGxldCByZXN1bHQgPSBy
ZXN1bHRzW2N1cnNvcisrXTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCBpbmRleCk7Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgaW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7CisgICAg
ICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgc2VnbWVudCk7CisgICAgICAgIHNob3VsZEJlKHJlc3Vs
dFszXSwgaXNXb3JkTGlrZSk7CisgICAgfQorfQorCit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5l
dyBJbnRsLlNlZ21lbnRlcigiamEiLCB7Z3JhbnVsYXJpdHk6ICJncmFwaGVtZSJ9KTsKKworICAg
IC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lfQW1fYV9DYXQKKyAgICBsZXQgaW5w
dXQgPSAi5ZC+6Lyp44Gv54yr44Gn44GC44KL44CC5ZCN5YmN44Gv44G+44Gg54Sh44GE44CC44Gp
44GT44Gn55Sf44KM44Gf44GL44Go44KT44Go6KaL5b2T44GM44Gk44GL44Gs44CCIjsKKyAgICBs
ZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVzdWx0
cyA9IFsKKyAgICAgICAgWyAwLCAxLCAi5ZC+IiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgMSwg
MiwgIui8qSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIsIDMsICLjga8iLCB1bmRlZmluZWQg
XSwKKyAgICAgICAgWyAzLCA0LCAi54yrIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgNCwgNSwg
IuOBpyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDUsIDYsICLjgYIiLCB1bmRlZmluZWQgXSwK
KyAgICAgICAgWyA2LCA3LCAi44KLIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgNywgOCwgIuOA
giIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDgsIDksICLlkI0iLCB1bmRlZmluZWQgXSwKKyAg
ICAgICAgWyA5LCAxMCwgIuWJjSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDEwLCAxMSwgIuOB
ryIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDExLCAxMiwgIuOBviIsIHVuZGVmaW5lZCBdLAor
ICAgICAgICBbIDEyLCAxMywgIuOBoCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDEzLCAxNCwg
IueEoSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE0LCAxNSwgIuOBhCIsIHVuZGVmaW5lZCBd
LAorICAgICAgICBbIDE1LCAxNiwgIuOAgiIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE2LCAx
NywgIuOBqSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE3LCAxOCwgIuOBkyIsIHVuZGVmaW5l
ZCBdLAorICAgICAgICBbIDE4LCAxOSwgIuOBpyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE5
LCAyMCwgIueUnyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIwLCAyMSwgIuOCjCIsIHVuZGVm
aW5lZCBdLAorICAgICAgICBbIDIxLCAyMiwgIuOBnyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBb
IDIyLCAyMywgIuOBiyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIzLCAyNCwgIuOBqCIsIHVu
ZGVmaW5lZCBdLAorICAgICAgICBbIDI0LCAyNSwgIuOCkyIsIHVuZGVmaW5lZCBdLAorICAgICAg
ICBbIDI1LCAyNiwgIuOBqCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI2LCAyNywgIuimiyIs
IHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI3LCAyOCwgIuW9kyIsIHVuZGVmaW5lZCBdLAorICAg
ICAgICBbIDI4LCAyOSwgIuOBjCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI5LCAzMCwgIuOB
pCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDMwLCAzMSwgIuOBiyIsIHVuZGVmaW5lZCBdLAor
ICAgICAgICBbIDMxLCAzMiwgIuOBrCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDMyLCAzMywg
IuOAgiIsIHVuZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9y
IChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAg
ICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3Vs
dFswXSwgaW5kZXgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVu
dC5sZW5ndGgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAg
ICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29yZExpa2UpOworICAgIH0KK30KKworeworICAgIGxl
dCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAic2Vu
dGVuY2UifSk7CisKKyAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JX0FtX2Ff
Q2F0CisgICAgbGV0IGlucHV0ID0gIuWQvui8qeOBr+eMq+OBp+OBguOCi+OAguWQjeWJjeOBr+OB
vuOBoOeEoeOBhOOAguOBqeOBk+OBp+eUn+OCjOOBn+OBi+OBqOOCk+OBqOimi+W9k+OBjOOBpOOB
i+OBrOOAgiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOwor
CisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgOCwgIuWQvui8qeOBr+eMq+OBp+OB
guOCi+OAgiIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDgsIDE2LCAi5ZCN5YmN44Gv44G+44Gg
54Sh44GE44CCIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgMTYsIDMzLCAi44Gp44GT44Gn55Sf
44KM44Gf44GL44Go44KT44Go6KaL5b2T44GM44Gk44GL44Gs44CCIiwgdW5kZWZpbmVkIF0sCisg
ICAgXTsKKyAgICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVudCwgaW5kZXgs
IGlzV29yZExpa2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAgIGxldCByZXN1bHQgPSByZXN1bHRz
W2N1cnNvcisrXTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCBpbmRleCk7CisgICAgICAg
IHNob3VsZEJlKHJlc3VsdFsxXSwgaW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7CisgICAgICAgIHNo
b3VsZEJlKHJlc3VsdFsyXSwgc2VnbWVudCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFszXSwg
aXNXb3JkTGlrZSk7CisgICAgfQorfQorCisvLyBTdXJyb2dhdGUgcGFpcnMuCit7CisgICAgbGV0
IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiamEiLCB7Z3JhbnVsYXJpdHk6ICJncmFw
aGVtZSJ9KTsKKyAgICBsZXQgaW5wdXQgPSAi8KCut+mHjuWutiI7CisgICAgbGV0IHNlZ21lbnRz
ID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAg
ICAgIFsgMCwgMiwgIvCgrrciLCB1bmRlZmluZWQgXSwKKyAgICAgICAgWyAyLCAzLCAi6YeOIiwg
dW5kZWZpbmVkIF0sCisgICAgICAgIFsgMywgNCwgIuWutiIsIHVuZGVmaW5lZCBdLAorICAgIF07
CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dv
cmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJz
b3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91
bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRC
ZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29y
ZExpa2UpOworICAgIH0KK30KKworeworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdt
ZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAid29yZCJ9KTsKKyAgICBsZXQgaW5wdXQgPSAi8KCu
t+mHjuWutiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOwor
CisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgMiwgIvCgrrciLCB0cnVlIF0sCisg
ICAgICAgIFsgMiwgNCwgIumHjuWutiIsIHRydWUgXSwKKyAgICBdOworICAgIGxldCBjdXJzb3Ig
PSAwOworICAgIGZvciAobGV0IHtzZWdtZW50LCBpbmRleCwgaXNXb3JkTGlrZX0gb2Ygc2VnbWVu
dHMpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbY3Vyc29yKytdOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbMF0sIGluZGV4KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCBp
bmRleCArIHNlZ21lbnQubGVuZ3RoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzJdLCBzZWdt
ZW50KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzNdLCBpc1dvcmRMaWtlKTsKKyAgICB9Cit9
CisKK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJqYSIsIHtncmFu
dWxhcml0eTogInNlbnRlbmNlIn0pOworICAgIGxldCBpbnB1dCA9ICLwoK636YeO5a62IjsKKyAg
ICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVz
dWx0cyA9IFsKKyAgICAgICAgWyAwLCA0LCAi8KCut+mHjuWutiIsIHVuZGVmaW5lZCBdLAorICAg
IF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBp
c1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tj
dXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91
bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlz
V29yZExpa2UpOworICAgIH0KK30KKworeworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5T
ZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAiZ3JhcGhlbWUifSk7CisgICAgbGV0IGlucHV0
ID0gIvCgrrfph47lrrYiOworICAgIGxldCBzZWdtZW50cyA9IHNlZ21lbnRlci5zZWdtZW50KGlu
cHV0KTsKKworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmco
MCkpLCBgeyJzZWdtZW50Ijoi8KCutyIsImluZGV4IjowLCJpbnB1dCI6IvCgrrfph47lrrYifWAp
OworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmcoMSkpLCBg
eyJzZWdtZW50Ijoi8KCutyIsImluZGV4IjowLCJpbnB1dCI6IvCgrrfph47lrrYifWApOworICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmcoMikpLCBgeyJzZWdt
ZW50Ijoi6YeOIiwiaW5kZXgiOjIsImlucHV0Ijoi8KCut+mHjuWutiJ9YCk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmluZygzKSksIGB7InNlZ21lbnQiOiLl
rrYiLCJpbmRleCI6MywiaW5wdXQiOiLwoK636YeO5a62In1gKTsKKyAgICBzaG91bGRCZShKU09O
LnN0cmluZ2lmeShzZWdtZW50cy5jb250YWluaW5nKDQpKSwgdW5kZWZpbmVkKTsKK30KKworewor
ICAgIC8vIOKUgzAgMSAyIDMgNCA14pSDNuKUgzfilIM44pSDOQorICAgIC8vIOKUg0EgbCBsIG8g
biBz4pSDLeKUg3nilIMh4pSDCisgICAgbGV0IGlucHV0ID0gIkFsbG9ucy15ISI7CisKKyAgICBs
ZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtncmFudWxhcml0eTogIndv
cmQifSk7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworICAg
IGxldCBjdXJyZW50ID0gdW5kZWZpbmVkOworCisgICAgY3VycmVudCA9IHNlZ21lbnRzLmNvbnRh
aW5pbmcoMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21l
bnQiOiJBbGxvbnMiLCJpbmRleCI6MCwiaW5wdXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtlIjp0
cnVlfWApOworCisgICAgY3VycmVudCA9IHNlZ21lbnRzLmNvbnRhaW5pbmcoNSk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiJBbGxvbnMiLCJpbmRl
eCI6MCwiaW5wdXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtlIjp0cnVlfWApOworCisgICAgY3Vy
cmVudCA9IHNlZ21lbnRzLmNvbnRhaW5pbmcoNik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiItIiwiaW5kZXgiOjYsImlucHV0IjoiQWxsb25zLXkh
IiwiaXNXb3JkTGlrZSI6ZmFsc2V9YCk7CisKKyAgICBjdXJyZW50ID0gc2VnbWVudHMuY29udGFp
bmluZyhjdXJyZW50LmluZGV4ICsgY3VycmVudC5zZWdtZW50Lmxlbmd0aCk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiJ5IiwiaW5kZXgiOjcsImlu
cHV0IjoiQWxsb25zLXkhIiwiaXNXb3JkTGlrZSI6dHJ1ZX1gKTsKKworICAgIGN1cnJlbnQgPSBz
ZWdtZW50cy5jb250YWluaW5nKGN1cnJlbnQuaW5kZXggKyBjdXJyZW50LnNlZ21lbnQubGVuZ3Ro
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW50KSwgYHsic2VnbWVudCI6IiEi
LCJpbmRleCI6OCwiaW5wdXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtlIjpmYWxzZX1gKTsKKwor
ICAgIGN1cnJlbnQgPSBzZWdtZW50cy5jb250YWluaW5nKGN1cnJlbnQuaW5kZXggKyBjdXJyZW50
LnNlZ21lbnQubGVuZ3RoKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW50KSwg
dW5kZWZpbmVkKTsKKyAgICAvLyDihpIgdW5kZWZpbmVkCit9Cit7CisgICAgbGV0IGlucHV0ID0g
IiI7CisKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtncmFu
dWxhcml0eTogIndvcmQifSk7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQo
aW5wdXQpOworCisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmlu
ZygwKSksIHVuZGVmaW5lZCk7CisgICAgbGV0IHJlc3VsdHMgPSBBcnJheS5mcm9tKHNlZ21lbnRz
W1N5bWJvbC5pdGVyYXRvcl0oKSk7CisgICAgc2hvdWxkQmUocmVzdWx0cy5sZW5ndGgsIDApOwor
fQoreworICAgIGxldCBpbnB1dCA9ICIgIjsKKworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50
bC5TZWdtZW50ZXIoImZyIiwge2dyYW51bGFyaXR5OiAid29yZCJ9KTsKKyAgICBsZXQgc2VnbWVu
dHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShzZWdtZW50cy5jb250YWluaW5nKDApKSwgYHsic2VnbWVudCI6IiAiLCJpbmRleCI6MCwi
aW5wdXQiOiIgIiwiaXNXb3JkTGlrZSI6ZmFsc2V9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoc2VnbWVudHMuY29udGFpbmluZygxKSksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmluZygyKSksIHVuZGVmaW5lZCk7CisgICAg
bGV0IHJlc3VsdHMgPSBBcnJheS5mcm9tKHNlZ21lbnRzW1N5bWJvbC5pdGVyYXRvcl0oKSk7Cisg
ICAgc2hvdWxkQmUocmVzdWx0cy5sZW5ndGgsIDEpOworICAgIGxldCB7c2VnbWVudCwgaW5kZXgs
IGlzV29yZExpa2V9ID0gcmVzdWx0c1swXTsKKyAgICBzaG91bGRCZSgwLCBpbmRleCk7CisgICAg
c2hvdWxkQmUoMSwgaW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7CisgICAgc2hvdWxkQmUoIiAiLCBz
ZWdtZW50KTsKKyAgICBzaG91bGRCZShmYWxzZSwgaXNXb3JkTGlrZSk7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwKaW5kZXggZmE5M2NhODRjM2ZlNGU2M2EyMDBlOTJiZmMwNTRmZjJjNWNhOWE3NC4uZWQ5NjUx
N2YzZTQwY2ZiYWQyMWRmZmVlOTExYjkzNTkzMjAyNzVmNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAt
Nyw2ICs3LDcgQEAgZmxhZ3M6CiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0NsYXNz
RmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMKICAg
SW50bC5EaXNwbGF5TmFtZXM6IHVzZUludGxEaXNwbGF5TmFtZXMKKyAgSW50bC5TZWdtZW50ZXI6
IHVzZUludGxTZWdtZW50ZXIKIHNraXA6CiAgIGZlYXR1cmVzOgogICAgIC0gU2hhcmVkQXJyYXlC
dWZmZXIKQEAgLTMwLDcgKzMxLDYgQEAgc2tpcDoKICAgICAtIEludGwuRGF0ZVRpbWVGb3JtYXQt
ZnJhY3Rpb25hbFNlY29uZERpZ2l0cwogICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAgICAgLSBJbnRs
Lk51bWJlckZvcm1hdC11bmlmaWVkCi0gICAgLSBJbnRsLlNlZ21lbnRlcgogICBwYXRoczoKICAg
ICAtIHRlc3QvYnVpbHQtaW5zL0RhdGFWaWV3L3Byb3RvdHlwZS9nZXRCaWdJbnQ2NAogICAgIC0g
dGVzdC9idWlsdC1pbnMvRGF0YVZpZXcvcHJvdG90eXBlL2dldEJpZ1VpbnQ2NApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2V4
cGVjdGF0aW9ucy55YW1sCmluZGV4IGY4OWFhYWU3NjA0MjBjZGYyNzVlM2FlZmY1M2U4ZTg4NGE0
NTIyYzkuLmFjYjg5OWQyMzI4MTgzMWYxNWZmNDE5OTAyMDdmMWQyMmFkOGI4OTUgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3Qy
NjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTE2MjEsOCArMTYyMSw4IEBAIHRlc3QvaW50bDQwMi9M
b2NhbGUvY29uc3RydWN0b3ItYXBwbHktb3B0aW9ucy1jYW5vbmljYWxpemVzLXR3aWNlLmpzOgog
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtydS1Bcm1uLVNV
wrssIMKrcnUtQXJtbi1BTcK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrcnUtQXJtbi1TVcK7LCDCq3J1LUFybW4tQU3Cuykg
dG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3Itbm9uLWlhbmEtY2Fu
b24uanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgibW8iKS5t
YXhpbWl6ZSgpLnRvU3RyaW5nKCkgcmV0dXJucyAicm8tTGF0bi1STyIgRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrcm/Cuywgwqtyby1MYXRuLVJPwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoIm1vIikubWF4aW1pemUoKS50b1N0cmluZygp
IHJldHVybnMgInJvLUxhdG4tUk8iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3JvwrssIMKrcm8tTGF0
bi1ST8K7KSB0byBiZSB0cnVlJworICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5M
b2NhbGUoInBvc2l4IikudG9TdHJpbmcoKSByZXR1cm5zICJwb3NpeCIgRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrZW4tVVMtdS12YS1wb3NpeMK7LCDCq3Bvc2l4wrspIHRvIGJlIHRydWUnCisgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoInBvc2l4IikudG9TdHJpbmco
KSByZXR1cm5zICJwb3NpeCIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tVVMtdS12YS1wb3NpeMK7
LCDCq3Bvc2l4wrspIHRvIGJlIHRydWUnCiB0ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9y
LW9wdGlvbnMtbGFuZ3VhZ2UtdmFsaWQtdW5kZWZpbmVkLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2
MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRp
b24gd2FzIHRocm93biBhdCBhbGwnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93
biBhdCBhbGwnCkBAIC0xNjcxLDYgKzE2NzEsMjEgQEAgdGVzdC9pbnRsNDAyL0xvY2FsZS9wcm90
b3R5cGUvbWluaW1pemUvcmVtb3ZpbmctbGlrZWx5LXN1YnRhZ3MtZmlyc3QtYWRkcy1saWtlbHkK
IHRlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvY29uc3RydWN0b3IvY29uc3RydWN0b3Iv
bG9jYWxlcy12YWxpZC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogR3JhbmRmYXRoZXJl
ZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2Fz
IHRocm93biBhdCBhbGwnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBHcmFuZGZhdGhl
cmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3
YXMgdGhyb3duIGF0IGFsbCcKK3Rlc3QvaW50bDQwMi9TZWdtZW50ZXIvY29uc3RydWN0b3IvY29u
c3RydWN0b3IvbG9jYWxlcy12YWxpZC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogR3Jh
bmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBH
cmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4
Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKK3Rlc3QvaW50bDQwMi9TZWdtZW50ZXIvcHJvdG90
eXBlL3NlZ21lbnQvc2VnbWVudC1ncmFwaGVtZS5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDCq3VuZGVmaW5lZMK7KSB0byBiZSB0cnVlJwor
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDC
q3VuZGVmaW5lZMK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL1NlZ21lbnRlci9wcm90b3R5
cGUvc2VnbWVudC9zZWdtZW50LXNlbnRlbmNlLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKrdW5kZWZpbmVkwrspIHRvIGJlIHRydWUnCisg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKr
dW5kZWZpbmVkwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvU2VnbWVudGVyL3Byb3RvdHlw
ZS9zZWdtZW50L3NlZ21lbnQtdG9zdHJpbmcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIHNlZ21lbnQgInVuZGVmaW5lZCIsIGZvdW5kICJ1bmRlZmluZWQiIGZvciBhcmd1
bWVudHMgIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCq3VuZGVmaW5lZMK7KSB0
byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgc2VnbWVu
dCAidW5kZWZpbmVkIiwgZm91bmQgInVuZGVmaW5lZCIgZm9yIGFyZ3VtZW50cyAgRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrdW5kZWZpbmVkwrspIHRvIGJlIHRydWUnCit0ZXN0
L2ludGw0MDIvU2VnbWVudGVyL3Byb3RvdHlwZS9zZWdtZW50L3NlZ21lbnQtd29yZC5qczoKKyAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDCq3VuZGVm
aW5lZMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrMMK7LCDCq3VuZGVmaW5lZMK7KSB0byBiZSB0cnVlJwogdGVzdC9pbnRs
NDAyL2xhbmd1YWdlLXRhZ3MtaW52YWxpZC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
SW52YWxpZCBsYW5ndWFnZSB0YWcgbm8tbnluIHdhcyBub3QgcmVqZWN0ZWQuIEV4cGVjdGVkIGEg
UmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFs
bCAoVGVzdGluZyB3aXRoIENvbGxhdG9yLiknCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBJbnZhbGlkIGxhbmd1YWdlIHRhZyBuby1ueW4gd2FzIG5vdCByZWplY3RlZC4gRXhwZWN0ZWQg
YSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQg
YWxsIChUZXN0aW5nIHdpdGggQ29sbGF0b3IuKScKQEAgLTI5MTUsMTggKzI5MzAsNiBAQCB0ZXN0
L2xhbmd1YWdlL2dsb2JhbC1jb2RlL3NjcmlwdC1kZWNsLWZ1bmMtZXJyLW5vbi1leHRlbnNpYmxl
LmpzOgogdGVzdC9sYW5ndWFnZS9nbG9iYWwtY29kZS9zY3JpcHQtZGVjbC12YXItZXJyLmpzOgog
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJv
d24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKICAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhj
ZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9sYW5ndWFnZS9pZGVudGlmaWVycy9wYXJ0
LXVuaWNvZGUtMTMuMC4wLWVzY2FwZWQuanM6Ci0gIGRlZmF1bHQ6ICJTeW50YXhFcnJvcjogSW52
YWxpZCB1bmljb2RlIGVzY2FwZSBpbiBpZGVudGlmaWVyOiAnX1xcdTBCNTUnIgotICBzdHJpY3Qg
bW9kZTogIlN5bnRheEVycm9yOiBJbnZhbGlkIHVuaWNvZGUgZXNjYXBlIGluIGlkZW50aWZpZXI6
ICdfXFx1MEI1NSciCi10ZXN0L2xhbmd1YWdlL2lkZW50aWZpZXJzL3BhcnQtdW5pY29kZS0xMy4w
LjAuanM6Ci0gIGRlZmF1bHQ6ICJTeW50YXhFcnJvcjogSW52YWxpZCBjaGFyYWN0ZXIgJ1xcdTBi
NTUnIgotICBzdHJpY3QgbW9kZTogIlN5bnRheEVycm9yOiBJbnZhbGlkIGNoYXJhY3RlciAnXFx1
MGI1NSciCi10ZXN0L2xhbmd1YWdlL2lkZW50aWZpZXJzL3N0YXJ0LXVuaWNvZGUtMTMuMC4wLWVz
Y2FwZWQuanM6Ci0gIGRlZmF1bHQ6ICJTeW50YXhFcnJvcjogSW52YWxpZCB1bmljb2RlIGVzY2Fw
ZSBpbiBpZGVudGlmaWVyOiAnXFx1MDhCRSciCi0gIHN0cmljdCBtb2RlOiAiU3ludGF4RXJyb3I6
IEludmFsaWQgdW5pY29kZSBlc2NhcGUgaW4gaWRlbnRpZmllcjogJ1xcdTA4QkUnIgotdGVzdC9s
YW5ndWFnZS9pZGVudGlmaWVycy9zdGFydC11bmljb2RlLTEzLjAuMC5qczoKLSAgZGVmYXVsdDog
IlN5bnRheEVycm9yOiBJbnZhbGlkIGNoYXJhY3RlciAnXFx1MDhiZSciCi0gIHN0cmljdCBtb2Rl
OiAiU3ludGF4RXJyb3I6IEludmFsaWQgY2hhcmFjdGVyICdcXHUwOGJlJyIKIHRlc3QvbGFuZ3Vh
Z2UvbGl0ZXJhbHMvcmVnZXhwL3UtYXN0cmFsLWNoYXItY2xhc3MtaW52ZXJ0LmpzOgogICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqvvv73CuywgwqtudWxswrsp
IHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqvvv73CuywgwqtudWxswrspIHRvIGJlIHRydWUnCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405243</attachid>
            <date>2020-07-25 22:52:48 -0700</date>
            <delta_ts>2020-07-25 22:52:48 -0700</delta_ts>
            <desc>Rebaseline + update</desc>
            <filename>bug-213638-20200725225247.patch</filename>
            <type>text/plain</type>
            <size>113357</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0ODk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjQwNjNiOTYzZjk3NjQxNWI0ZTRjMjkxNjcwMWJkZmUzNzFjOThjLi43MTU5MzA1YjU0MDFkZTg1
NzA3MjI3N2Q4NjNkZDk5NmI1NjQyZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMC0wNy0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBJbnRsLlNlZ21lbnRlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNjM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgUm9zcyBLaXJzbGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgSW50bC5T
ZWdtZW50ZXJbMV0uIEludGwuU2VnbWVudGVyIG9mZmVycyBhY2Nlc3MgdG8gSUNVIGJyZWFrIGl0
ZXJhdG9yIGZlYXR1cmUsIHdoaWNoIGNhbiBicmVhayBzdHJpbmdzIGludG8gZ3JhcGhlbWUgY2x1
c3RlciAvIHdvcmRzIC8gc2VudGVuY2VzLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIu
Y29tL3RjMzkvcHJvcG9zYWwtaW50bC1zZWdtZW50ZXIKKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpjcmVhdGVTZWdtZW50ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bFNlZ21lbnRlckF2YWls
YWJsZUxvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJ
bnRsU2VnbWVudEl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJh
dG9yOjpJbnRsU2VnbWVudEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVy
YXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9y
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yLmg6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpJbnRsU2VnbWVu
dEl0ZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlRnVuY05leHQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50ZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
SW50bFNlZ21lbnRlcjo6SW50bFNlZ21lbnRlcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50
ZXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6aW5pdGlh
bGl6ZVNlZ21lbnRlcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OnNlZ21lbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyOjpyZXNvbHZlZE9wdGlvbnMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyOjpncmFudWxhcml0eVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxTZWdtZW50ZXI6OmNyZWF0ZVNlZ21lbnREYXRhT2JqZWN0KToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxTZWdtZW50ZXIuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9J
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVy
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50
ZXJDb25zdHJ1Y3Rvcjo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEludGxTZWdtZW50ZXIpOgorICAgICAgICAoSlNDOjpjYWxsSW50bFNlZ21lbnRl
cik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXJDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2Fs
ZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaDogQWRk
ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGU6OkludGxTZWdtZW50ZXJQcm90b3R5cGUpOgor
ICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudCk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICog
cnVudGltZS9JbnRsU2VnbWVudHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bFNlZ21l
bnRzOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudHM6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6SW50bFNlZ21lbnRzKToKKyAgICAgICAg
KEpTQzo6SW50bFNlZ21lbnRzOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxT
ZWdtZW50czo6Y29udGFpbmluZyk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6Y3JlYXRl
U2VnbWVudEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRzOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KiBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsU2VnbWVudHNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxTZWdt
ZW50c1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21l
bnRzUHJvdG90eXBlOjpJbnRsU2VnbWVudHNQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRs
U2VnbWVudHNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bFNl
Z21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVu
dHNQcm90b3R5cGVGdW5jSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRz
UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZWdtZW50SXRlcmF0b3JT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2VnbWVudGVyU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNlZ21lbnRzU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIwLTA3LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBwbHVn
aW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KCkgc2hvdWxkIHN1cHBvcnQgVk1JbnF1
aXJ5IHJlcXVlc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCBkNzllNDQ2OWRiZDg1MmRkNjYxYmM5MGUwYjYyNDRkMmYxZjcw
M2JkLi4xZDAxNmVjOTBjOTUxYTNkYzQ4ZDJhYTg5NGYzZjczNmVjMGJhOTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIwLTA3LTI1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0pTQ10gQWRkIEludGwuU2VnbWVudGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM2MzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjpjaGFyYWN0ZXJzV2l0aG91dE51bGxUZXJtaW5hdGlvbiBjb25z
dCk6CisgICAgICAgIChXVEY6OlN0cmluZzo6Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24g
Y29uc3QpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDIwLTA3LTIzICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGlPUyBzaW11
bGF0b3IgZG9lcyBub3Qgc3VwcG9ydCBXZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGE4NjI4OGIyZTc3NzBlODgxN2EwZThkYjJiNDhkNzI2Mzc3OGRjMTUu
LjdkMDIxNjBmZTRkNmNjYWU5MDI3MGNjYjg1NmIwNzA5ZjIyM2M0MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgwLDYgKzgwLDEwIEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
ICAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAgcnVu
dGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlw
ZS5jcHAKKyAgICBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1l
L0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
ICAgICBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cmlu
ZGV4IDVhMGM4ODNkNTM0OGU2NTY3YWVmZjk2YWViYzA4MWZiYTA3NmNlMzcuLjNjYzA5NWEyYWNi
YmZkNjU1OTM1M2VkNDQxYTlmYjI5MTMzMDE1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNDcsNiArMTQ3
LDEwIEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3Iu
Y3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAK
ICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3Iu
Y3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCisk
KFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKICQoUFJPSkVD
VF9ESVIpL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0pTSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMmJkZjViMmM4MjJhNmQ5
ZTdiNmY0NTZiYjBhOTYxNjNlZTFkNmQxMC4uY2ViOTI4ZmQ5Nzc1NmQwMGJkOTdjY2RkZTNmNTYx
MTlhMDQxNmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzcsNiArMzcsMTAgQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxQbHVyYWxSdWxlc0Nv
bnN0cnVjdG9yLmwKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFNlZ21l
bnRJdGVyYXRvclByb3RvdHlwZS5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5sdXQuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxTZWdt
ZW50ZXJQcm90b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnRsU2VnbWVudHNQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQ1ZDZmMmJiZDAxMzMwN2M4NGE4MTAzN2MwMWI1
MjFjYmQyYWE0ZjAuLjlhOWVhZTkzZjY5YzdmYWFhZGYyYjI1YzdkMjZhYTk5YTZkNTg4YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNjgsNiArMTY4
LDEwIEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUubHV0LmggXAogICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBc
CiAgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bFNl
Z21lbnRJdGVyYXRvclByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bFNlZ21lbnRlckNvbnN0cnVj
dG9yLmx1dC5oIFwKKyAgICBJbnRsU2VnbWVudGVyUHJvdG90eXBlLmx1dC5oIFwKKyAgICBJbnRs
U2VnbWVudHNQcm90b3R5cGUubHV0LmggXAogICAgIEpTRGF0YVZpZXdQcm90b3R5cGUubHV0Lmgg
XAogICAgIEpTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKICAgICBKU0ludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjBjMDVlMDIz
ZTk3MWQ0YzcyYzQ1MzM4MmVjOWFmYjkzZWIxMjhlNy4uOTkyZWVkZGJhNDUyYTJkMTU5NjBlZTQy
M2EwMjUwMGYxMjBjNWExZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3ODQs
NiArMTc4NCwxOCBAQAogCQlERTI2RTkwMzFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1
dGFibGVDcmVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9y
LmggKi87IH07CiAJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMjRB
OEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8q
IE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTMwNzE3ODMyNEM3ODI3MTAwREYwNjQ0IC8qIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEz
QkY4ODUwMjQ0ODBCRTEwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmggKi87IH07
CisJCUUzMDcxNzg0MjRDNzgyNzcwMERGMDY0NCAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuaCAqLzsgfTsKKwkJRTMwNzE3ODUyNEM3ODI3OTAwREYwNjQ0IC8qIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzQkY4ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0UHJvdG90eXBlLmggKi87IH07CisJCUUzMDcxNzg2MjRDNzgyN0MwMERGMDY0NCAvKiBJ
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMDcxNzdEMjRDNzgyNDYwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVy
Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTMwNzE3ODcyNEM3ODI3RTAwREYwNjQ0IC8qIEludGxT
ZWdtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMDcxNzgxMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyLmggKi87IH07CisJCUUz
MDcxNzg4MjRDNzgyODEwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzA3MTc3RjI0Qzc4MjQ3
MDBERjA2NDQgLyogSW50bFNlZ21lbnRlclByb3RvdHlwZS5oICovOyB9OworCQlFMzA3MTc4OTI0
Qzc4Mjg2MDBERjA2NDQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RDVGQjE4RDIwNzQ0QUU4MDA1RERG
NjQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggKi87IH07CisJCUUzMDcxNzhBMjRDNzgy
OEMwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOTAyMDc0NEJGMTAwNURERjY0
IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi87IH07CisJCUUzMDcxNzhCMjRDNzgy
OEYwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMTkyMjA3NDRCRjIwMDVEREY2NCAvKiBJbnRsUGx1
cmFsUnVsZXMuaCAqLzsgfTsKKwkJRTMwNzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxMb2Nh
bGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEzQUZGOTMwMjQ1QTNDRkMwMEM5QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi87
IH07CisJCUUzMDcxNzhEMjRDNzgyOUEwMERGMDY0NCAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJD
MjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTMw
NzE3OEUyNEM3ODI5RDAwREYwNjQ0IC8qIEludGxMb2NhbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJ
bnRsTG9jYWxlLmggKi87IH07CiAJCUUzMTE3OUFBMjI4ODM4NjEwMDUxNEIyQyAvKiBTeW1ib2xU
YWJsZU9yU2NvcGVEZXB0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8qIFN5bWJvbFRhYmxlT3JTY29wZURl
cHRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVDNUZFMDgwMDA2QTIx
OCAvKiBET01Bbm5vdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTMxNjE4MTUxRUM1RkUyNzAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdl
dHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMxNjE4MTIxRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xODcx
LDYgKzE4ODMsMTAgQEAKIAkJRTNEMzUxNUYyNDFCODlENzAwOERDMTZFIC8qIE1hcmtlZEpTVmFs
dWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5oICov
OyB9OwogCQlFM0Q4Nzc3NDFFNjVDMEEwMDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDg3NzcyMUU2NUMw
ODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oICovOyB9OwogCQlFM0VFMTM3NjIxRkJENDM1
MDBEODNDNEIgLyogRXJyb3JUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0VFMTM3NDIxRkJENDM0MDBEODNDNEIgLyogRXJyb3JUeXBlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNGMjE5Mzcy
NEM3ODgyRjAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjIxOTMxMjRDNzg4MjkwMDNBRTQ1MyAv
KiBJbnRsU2VnbWVudEl0ZXJhdG9yLmggKi87IH07CisJCUUzRjIxOTM4MjRDNzg4MzEwMDNBRTQ1
MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyMTkyRjI0Qzc4ODI5MDAzQUU0NTMgLyogSW50
bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oICovOyB9OworCQlFM0YyMTkzOTI0Qzc4ODM0MDAz
QUU0NTMgLyogSW50bFNlZ21lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0YyMTkzMzI0Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNlZ21lbnRzLmgg
Ki87IH07CisJCUUzRjIxOTNBMjRDNzg4MzYwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjIx
OTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuaCAqLzsgfTsKIAkJ
RTNGMjNBN0YxRUNGMTNFRTAwOTc4RDk5IC8qIFNuaXBwZXRTbG93UGF0aENhbGxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyM0E3RTFFQ0YxM0U1
MDA5NzhEOTkgLyogU25pcHBldFNsb3dQYXRoQ2FsbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MDFFQ0YxM0Y1MDA5NzhEOTkgLyog
U25pcHBldFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNGMjNBN0QxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRSZWcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MTFFQ0YxM0ZBMDA5
NzhEOTkgLyogU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNGMjNBN0MxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRQYXJhbXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDk0
OCw2ICs0OTY0LDEyIEBACiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZp
ZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJRTMwNjAxMjgyMjhGOTc4MTAwRkFBQkRGIC8qIFVu
bGlua2VkTWV0YWRhdGFUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZE1ldGFk
YXRhVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzA2Nzc5NzFCOEJD
NkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBwYXRoID0gTW9kdWxlTG9hZGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzA3MTc3RDI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzA3MTc3RTI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21l
bnRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVudGVyUHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3N0YyNEM3ODI0NzAw
REYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bFNl
Z21lbnRlclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzA3MTc4
MDI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRsU2VnbWVudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3
ODEyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bFNlZ21lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzA3MTc4MjI0Qzc4
MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzMTE3OUE5MjI4ODM4NUQwMDUxNEIyQyAvKiBTeW1ib2xUYWJsZU9yU2NvcGVE
ZXB0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzE2MTgxMDFFQzVGRTA4MDAwNkEyMTggLyogRE9NQW5u
b3RhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Bbm5vdGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTYxODExMUVDNUZFMDgwMDA2QTIx
OCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTUwOTQsNiArNTExNiwxNCBAQAogCQlFM0Q4Nzc3MjFFNjVDMDg5
MDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnl0ZWNvZGVEdW1wZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNF
RTEzNzQyMUZCRDQzNDAwRDgzQzRCIC8qIEVycm9yVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFcnJvclR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNFRTEzNzUyMUZCRDQzNDAwRDgzQzRCIC8qIEVycm9yVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvclR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0YyMTkyRjI0Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRv
clByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIxOTMwMjRDNzg4MjkwMDNBRTQ1
MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxTZWdt
ZW50SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0YyMTkzMTI0
Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRsU2VnbWVudEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIx
OTMyMjRDNzg4MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNGMjE5MzMyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRsU2VnbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTNGMjE5MzQyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnRsU2VnbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFM0YyMTkzNTI0Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjE5MzYyNEM3ODgyQjAwM0FFNDUz
IC8qIEludGxTZWdtZW50c1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsU2VnbWVudHNQ
cm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGMjNBN0IxRUNGMTNF
NTAwOTc4RDk5IC8qIFNuaXBwZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U25pcHBldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyM0E3QzFFQ0YxM0U1
MDA5NzhEOTkgLyogU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTbmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRjIz
QTdEMUVDRjEzRTUwMDk3OEQ5OSAvKiBTbmlwcGV0UmVnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNuaXBwZXRSZWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTczMTUsNiArNzM0NSwyMCBAQAogCQkJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKIAkJCQlBM0JGODg0QjI0NDgwQkRF
MDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJ
QTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5
cGUuaCAqLywKKwkJCQlFMzA3MTc4MDI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlci5j
cHAgKi8sCisJCQkJRTMwNzE3ODEyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIuaCAq
LywKKwkJCQlFMzA3MTc4MjI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVj
dG9yLmNwcCAqLywKKwkJCQlFMzA3MTc3RDI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21lbnRl
ckNvbnN0cnVjdG9yLmggKi8sCisJCQkJRTMwNzE3N0UyNEM3ODI0NjAwREYwNjQ0IC8qIEludGxT
ZWdtZW50ZXJQcm90b3R5cGUuY3BwICovLAorCQkJCUUzMDcxNzdGMjRDNzgyNDcwMERGMDY0NCAv
KiBJbnRsU2VnbWVudGVyUHJvdG90eXBlLmggKi8sCisJCQkJRTNGMjE5MzAyNEM3ODgyOTAwM0FF
NDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuY3BwICovLAorCQkJCUUzRjIxOTMxMjRDNzg4Mjkw
MDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yLmggKi8sCisJCQkJRTNGMjE5MzUyNEM3ODgy
QTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCUUz
RjIxOTJGMjRDNzg4MjkwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmgg
Ki8sCisJCQkJRTNGMjE5MzQyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5jcHAgKi8s
CisJCQkJRTNGMjE5MzMyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oICovLAorCQkJ
CUUzRjIxOTMyMjRDNzg4MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwICov
LAorCQkJCUUzRjIxOTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUu
aCAqLywKIAkJCQkwRjI3NUYyQzFFQ0UwNzk2MDA2MjBENDcgLyogSW50cmluc2ljLmNwcCAqLywK
IAkJCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8sCiAJCQkJOEI5
RjZENTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCAqLywKQEAgLTk3ODYsNiAr
OTgzMCw5IEBACiAJCQkJRTM2NUYzM0EyNEFBNjIzOTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTNDMTIxMjRBQTRDQjcw
MDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzY1RjMzQjI0QUE2MjNCMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5s
dXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzhFMjRDNzgyOUQwMERGMDY0NCAvKiBJbnRs
TG9jYWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4RDI0Qzc4MjlBMDBERjA2NDQgLyog
SW50bExvY2FsZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4QzI0Qzc4
Mjk4MDBERjA2NDQgLyogSW50bExvY2FsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAv
KiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTk3
OTMsNiArOTg0MCwxOSBAQAogCQkJCUExMjU4NDZGMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyQkJGRjIxQjA0
NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOEVCRTI0
MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTMwNzE3OEIyNEM3ODI4RjAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTMwNzE3OEEyNEM3ODI4QzAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxlc0Nv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4OTI0Qzc4Mjg2MDBERjA2NDQg
LyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4
MzI0Qzc4MjcxMDBERjA2NDQgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTMwNzE3ODQyNEM3ODI3NzAwREYwNjQ0IC8qIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3ODUyNEM3ODI3OTAwREYw
NjQ0IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzMDcxNzg3MjRDNzgyN0UwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFMzA3MTc4NjI0Qzc4MjdDMDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4ODI0Qzc4MjgxMDBERjA2NDQgLyog
SW50bFNlZ21lbnRlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNGMjE5MzcyNEM3
ODgyRjAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzRjIxOTM4MjRDNzg4MzEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0YyMTkzOTI0Qzc4ODM0MDAzQUU0NTMgLyogSW50bFNl
Z21lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0YyMTkzQTI0Qzc4ODM2MDAzQUU0NTMgLyog
SW50bFNlZ21lbnRzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjBCRDgwMTE0OEVB
NkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzRFMDM1NDFF
NTNCRDI5MDAyMTNGNjQgLyogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZEQ0UxMzIxRkIxMURBNDAwNkYzOTAxIC8qIElzb0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDU5
MGRiNDI4NzU0MWFjNGUzMTdlYmRiZGZkMjc2ZGE1NzM0MmNlN2UuLjI4NDY1ZDYyZmYzYWY0NjYw
OGNlMmJlMTUwY2FjYjcyNzhhMGRiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAg
LTgzMSw2ICs4MzEsMTMgQEAgcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCiBy
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCiBydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5jcHAKK3J1bnRpbWUvSW50
bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAK
K3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9JbnRsU2VnbWVu
dGVyUHJvdG90eXBlLmNwcAorcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCitydW50aW1lL0ludGxT
ZWdtZW50c1Byb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAogcnVu
dGltZS9JdGVyYXRvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSlNBcnJheS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGNh
MTlkMDJiZTE3Y2EwNjQwNmEzOGU2MTY3NDExZTMwNWE0ZTUwNGYuLjIwN2IzMGY3NzI2NDNmN2U4
N2RlZDUwNGFkMDg2Zjc5NDliY2FmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtNTQsNiArNTQsNyBAQAogICAgIG1hY3Jv
KFJlZ0V4cCkgXAogICAgIG1hY3JvKFJlbGF0aXZlVGltZUZvcm1hdCkgXAogICAgIG1hY3JvKFJl
bW90ZVBsYXliYWNrKSBcCisgICAgbWFjcm8oU2VnbWVudGVyKSBcCiAgICAgbWFjcm8oU2V0KSBc
CiAgICAgbWFjcm8oU2hhcmVkQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhTdHJpbmcpIFwKQEAg
LTExOSw2ICsxMjAsNyBAQAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKGdsb2JhbCkgXAog
ICAgIG1hY3JvKGdvKSBcCisgICAgbWFjcm8oZ3JhbnVsYXJpdHkpIFwKICAgICBtYWNybyhncm91
cHMpIFwKICAgICBtYWNybyhoYXMpIFwKICAgICBtYWNybyhoYXNPd25Qcm9wZXJ0eSkgXApAQCAt
MTM5LDYgKzE0MSw3IEBACiAgICAgbWFjcm8oaXNQcm90b3R5cGVPZikgXAogICAgIG1hY3JvKGlz
VmlldykgXAogICAgIG1hY3JvKGlzV2F0Y2hwb2ludCkgXAorICAgIG1hY3JvKGlzV29yZExpa2Up
IFwKICAgICBtYWNybyhqZXR0aXNvblJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKICAgICBt
YWNybyhsYW5ndWFnZSkgXApAQCAtMTc2LDYgKzE3OSw3IEBACiAgICAgbWFjcm8ocmVzb2x2ZSkg
XAogICAgIG1hY3JvKHNjcmlwdCkgXAogICAgIG1hY3JvKHNlY29uZCkgXAorICAgIG1hY3JvKHNl
Z21lbnQpIFwKICAgICBtYWNybyhzZW5zaXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkgXAogICAg
IG1hY3JvKHNpemUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAKaW5kZXggYzVhNjA4OTk4YjY2MDY5NGYyY2E4YzBhMjM3YzZkZjUzMGIwYmY1OC4uNjAx
MzQzMTc2MjI4ZGQzNTBlZGRiMTI2ZGJmMWYzOWIwYmFhOGJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTQ4LDggKzQ4LDEyIEBACiAjaW5j
bHVkZSAiSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRs
U2VnbWVudGVyQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVyUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNs
dWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KICNpbmNsdWRl
IDx1bmljb2RlL3VmaWVsZHBvc2l0ZXIuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KQEAg
LTExNiw2ICsxMjAsMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPnJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSgp
LT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVT
ZWdtZW50ZXJDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgSW50
bE9iamVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4ob2JqZWN0KTsKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW50bE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZt
KTsKKyAgICByZXR1cm4gSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxT
ZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsU2VnbWVudGVyUHJv
dG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5zZWdtZW50ZXJTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90
eXBlT2JqZWN0KCkpKTsKK30KKwogfQogCiAjaW5jbHVkZSAiSW50bE9iamVjdC5sdXQuaCIKQEAg
LTE2OSw2ICsxODAsOCBAQCB2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqKQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY3JlYXRlRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IpOwogI2VuZGlmCisgICAgaWYgKE9wdGlvbnM6OnVzZUludGxTZWdtZW50
ZXIoKSkKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPlNlZ21lbnRlciwgY3JlYXRlU2VnbWVudGVyQ29uc3RydWN0b3Iodm0sIHRoaXMpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAK
IFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0yODEsNiArMjk0LDI3
IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygp
CiAgICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXM7CiB9CiAKK2NvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgaW50bFNlZ21lbnRlckF2YWlsYWJsZUxvY2FsZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7CisgICAgSGFz
aFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5n
ZXQoKTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBz
dGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKKyAgICAgICAgQVNTRVJUKGF2YWls
YWJsZUxvY2FsZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgY29uc3RleHByIGJvb2wgaXNJbW1vcnRh
bCA9IHRydWU7CisgICAgICAgIGludDMyX3QgY291bnQgPSB1YnJrX2NvdW50QXZhaWxhYmxlKCk7
CisgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAg
ICAgIFN0cmluZyBsb2NhbGUgPSBsYW5ndWFnZVRhZ0ZvckxvY2FsZUlEKHVicmtfZ2V0QXZhaWxh
YmxlKGkpLCBpc0ltbW9ydGFsKTsKKyAgICAgICAgICAgIGlmIChsb2NhbGUuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5h
ZGQobG9jYWxlKTsKKyAgICAgICAgICAgIGFkZFNjcmlwdGxlc3NMb2NhbGVJZk5lZWRlZChhdmFp
bGFibGVMb2NhbGVzLCBsb2NhbGUpOworICAgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJuIGF2
YWlsYWJsZUxvY2FsZXM7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZ2V0
b3B0aW9uCiBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCAwYjBhN2JiNmJhNDFj
MWVmMjkxYTI4MjIzYjg1MDM4MTg3Zjc2OGQ2Li41ZWQ0ZDE1ZTYwNDZmMDFjZWIyYjU3MjlhYmYw
MmY4NjA1MWU3MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIEludGxPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiBTdHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCopOwog
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOwogY29uc3QgSGFz
aFNldDxTdHJpbmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCk7Citjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGludGxTZWdtZW50ZXJBdmFpbGFibGVMb2NhbGVzKCk7CiBpbmxpbmUgY29u
c3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkg
eyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgaW50bERpc3BsYXlOYW1lc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRs
QXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRs
TnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2Nh
bGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50SXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNl
Z21lbnRJdGVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU1YzZmMGQ3OWJjMmViZGI0OTFiNzFjOTNk
MWJiODhmZTM3Y2RkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5o
IgorCisjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8dW5pY29kZS91
Y3Vyci5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8g
SW50bFNlZ21lbnRJdGVyYXRvcjo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsU2VnbWVudEl0ZXJhdG9y
KSB9OworCitJbnRsU2VnbWVudEl0ZXJhdG9yKiBJbnRsU2VnbWVudEl0ZXJhdG9yOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJh
dG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+JiYgc2VnbWVudGVyLCBCb3g8VmVjdG9yPFVDaGFy
Pj4gYnVmZmVyLCBKU1N0cmluZyogc3RyaW5nLCBJbnRsU2VnbWVudGVyOjpHcmFudWxhcml0eSBn
cmFudWxhcml0eSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbnRsU2VnbWVudEl0ZXJhdG9yPih2bS5oZWFwKSkgSW50bFNlZ21lbnRJdGVyYXRvcih2
bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHNlZ21lbnRlciksIFdURk1vdmUoYnVmZmVyKSwgZ3JhbnVs
YXJpdHkpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cmluZyk7CisgICAgcmV0
dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsU2VnbWVudEl0ZXJhdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Cit9CisKK0ludGxTZWdtZW50SXRlcmF0b3I6OkludGxTZWdtZW50SXRlcmF0b3IoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBV
QnJlYWtJdGVyYXRvckRlbGV0ZXI+JiYgc2VnbWVudGVyLCBCb3g8VmVjdG9yPFVDaGFyPj4mJiBi
dWZmZXIsIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9zZWdtZW50ZXIoV1RGTW92ZShzZWdtZW50ZXIpKQor
ICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQorICAgICwgbV9ncmFudWxhcml0eShncmFu
dWxhcml0eSkKK3sKK30KKwordm9pZCBJbnRsU2VnbWVudEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTU3RyaW5nKiBzdHJpbmcpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgbV9zdHJpbmcuc2V0
KHZtLCB0aGlzLCBzdHJpbmcpOworfQorCit2b2lkIEludGxTZWdtZW50SXRlcmF0b3I6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxTZWdtZW50SXRlcmF0b3IqPihjZWxsKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fc3RyaW5nKTsKK30KKworSlNPYmplY3QqIEludGxTZWdtZW50SXRl
cmF0b3I6Om5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgaW50MzJfdCBzdGFydEluZGV4ID0gdWJya19jdXJyZW50KG1fc2VnbWVu
dGVyLmdldCgpKTsKKyAgICBpbnQzMl90IGVuZEluZGV4ID0gdWJya19uZXh0KG1fc2VnbWVudGVy
LmdldCgpKTsKKyAgICBpZiAoZW5kSW5kZXggPT0gVUJSS19ET05FKQorICAgICAgICByZXR1cm4g
Y3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoZ2xvYmFsT2JqZWN0LCBqc1VuZGVmaW5lZCgpLCB0
cnVlKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gSW50bFNlZ21lbnRlcjo6Y3JlYXRlU2VnbWVu
dERhdGFPYmplY3QoZ2xvYmFsT2JqZWN0LCBtX3N0cmluZy5nZXQoKSwgc3RhcnRJbmRleCwgZW5k
SW5kZXgsICptX3NlZ21lbnRlciwgbV9ncmFudWxhcml0eSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKyAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3Qo
Z2xvYmFsT2JqZWN0LCBvYmplY3QsIGZhbHNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGRiOTYwM2IyNjg4MmQyN2RhYmU2MjAzYWMwNzc3MzVjMzU3NDM2MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdt
ZW50SXRlcmF0b3IuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBJbnRsU2VnbWVudEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxJbnRs
U2VnbWVudEl0ZXJhdG9yKj4oY2VsbCktPkludGxTZWdtZW50SXRlcmF0b3I6On5JbnRsU2VnbWVu
dEl0ZXJhdG9yKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bFNlZ21lbnRJdGVyYXRvclNwYWNl
PG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIEludGxTZWdtZW50SXRlcmF0b3IqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFr
SXRlcmF0b3JEZWxldGVyPiYmLCBCb3g8VmVjdG9yPFVDaGFyPj4sIEpTU3RyaW5nKiwgSW50bFNl
Z21lbnRlcjo6R3JhbnVsYXJpdHkpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87
CisKKyAgICBKU09iamVjdCogbmV4dChKU0dsb2JhbE9iamVjdCopOworCisgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcml2YXRlOgorICAg
IEludGxTZWdtZW50SXRlcmF0b3IoVk0mLCBTdHJ1Y3R1cmUqLCBzdGQ6OnVuaXF1ZV9wdHI8VUJy
ZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4mJiwgQm94PFZlY3RvcjxVQ2hhcj4+
JiYsIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSlNTdHJpbmcqKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwg
VUJyZWFrSXRlcmF0b3JEZWxldGVyPiBtX3NlZ21lbnRlcjsKKyAgICBCb3g8VmVjdG9yPFVDaGFy
Pj4gbV9idWZmZXI7CisgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX3N0cmluZzsKKyAgICBJ
bnRsU2VnbWVudGVyOjpHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5OworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
U2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MDA5Yzky
ZjUzNTk5Y2M3ZDgxZDBhY2Q3ZDUzMDZhN2ZkNjFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNw
cApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkludGxT
ZWdtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsU2VnbWVudEl0
ZXJhdG9yUHJvdG90eXBlRnVuY05leHQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwor
fQorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJTZWdtZW50IFN0cmluZyBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8s
ICZzZWdtZW50SXRlcmF0b3JQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIElu
dGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBzZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgICAgICAgIEludGxTZWdtZW50SXRlcmF0b3JQcm90
b3R5cGVGdW5jTmV4dCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyov
CisKK0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUqIEludGxTZWdtZW50SXRlcmF0b3JQcm90
b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8q
IG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmpl
Y3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCitJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpJbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFH
X1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
aW50bC1zZWdtZW50ZXIvI3NlYy0lc2VnbWVudGl0ZXJhdG9ycHJvdG90eXBlJS5uZXh0CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGVGdW5j
TmV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogc2VnbWVudEl0ZXJhdG9yID0ganNE
eW5hbWljQ2FzdDxJbnRsU2VnbWVudEl0ZXJhdG9yKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghc2VnbWVudEl0ZXJhdG9yKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5TZWdtZW50SXRlcmF0b3IucHJvdG90
eXBlLm5leHQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgU2VnbWVudEl0ZXJhdG9yIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRJdGVyYXRvci0+bmV4dChnbG9iYWxPYmplY3QpKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI1M2NiMjI1ZTJhOGUwMGYxZTUxNzIwMmE1M2M4MTEyYWNlOWYwYzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9y
UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxT
ZWdtZW50SXRlcmF0b3JQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4g
JnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEludGxTZWdtZW50SXRl
cmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisK
KyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWNhMTlmZGVlN2NiODhlZGIyODc2
YjcyMmY2MzdlYWUzYmRiOWU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorCisj
aW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyOjpzX2lu
Zm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxTZWdtZW50ZXIpIH07CisKK0ludGxTZWdtZW50ZXIqIEludGxTZWdt
ZW50ZXI6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8q
IG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50ZXI+KHZtLmhl
YXApKSBJbnRsU2VnbWVudGVyKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bFNlZ21l
bnRlcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsU2VnbWVudGVyOjpJbnRsU2VnbWVudGVyKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9
CisKK3ZvaWQgSW50bFNlZ21lbnRlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkp
OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1zZWdtZW50ZXIvI3NlYy1p
bnRsLnNlZ21lbnRlcgordm9pZCBJbnRsU2VnbWVudGVyOjppbml0aWFsaXplU2VnbWVudGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRp
b25zVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gcmVxdWVzdGVkTG9j
YWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNPYmplY3QqIG9w
dGlvbnM7CisgICAgaWYgKG9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBvcHRp
b25zID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlw
ZU9iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlv
bnNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIFJlc29sdmVMb2NhbGVPcHRpb25zIGxv
Y2FsZU9wdGlvbnM7CisKKyAgICBMb2NhbGVNYXRjaGVyIGxvY2FsZU1hdGNoZXIgPSBpbnRsT3B0
aW9uPExvY2FsZU1hdGNoZXI+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1l
cy0+bG9jYWxlTWF0Y2hlciwgeyB7ICJsb29rdXAiX3MsIExvY2FsZU1hdGNoZXI6Okxvb2t1cCB9
LCB7ICJiZXN0IGZpdCJfcywgTG9jYWxlTWF0Y2hlcjo6QmVzdEZpdCB9IH0sICJsb2NhbGVNYXRj
aGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0IGZpdFwiIl9zLCBMb2NhbGVN
YXRjaGVyOjpCZXN0Rml0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OworCisgICAgYXV0byBsb2NhbGVEYXRhID0gW10oY29uc3QgU3RyaW5nJiwgUmVsZXZhbnRFeHRl
bnNpb25LZXkpIC0+IFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
OworCisgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxTZWdtZW50ZXJBdmFpbGFibGVM
b2NhbGVzKCk7CisgICAgYXV0byByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0
LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBsb2NhbGVNYXRjaGVyLCBsb2Nh
bGVPcHRpb25zLCB7IH0sIGxvY2FsZURhdGEpOworCisgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5s
b2NhbGU7CisgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgeworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudGVy
IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX2dyYW51bGFyaXR5ID0gaW50bE9wdGlvbjxHcmFudWxhcml0eT4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ncmFudWxhcml0eSwgeyB7ICJncmFwaGVtZSJfcywg
R3JhbnVsYXJpdHk6OkdyYXBoZW1lIH0sIHsgIndvcmQiX3MsIEdyYW51bGFyaXR5OjpXb3JkIH0s
IHsgInNlbnRlbmNlIl9zLCBHcmFudWxhcml0eTo6U2VudGVuY2UgfSB9LCAiZ3JhbnVsYXJpdHkg
bXVzdCBiZSBlaXRoZXIgXCJncmFwaGVtZVwiLCBcIndvcmRcIiwgb3IgXCJzZW50ZW5jZVwiIl9z
LCBHcmFudWxhcml0eTo6R3JhcGhlbWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CisKKyAgICBVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSA9IFVCUktfQ0hBUkFDVEVS
OworICAgIHN3aXRjaCAobV9ncmFudWxhcml0eSkgeworICAgIGNhc2UgR3JhbnVsYXJpdHk6Okdy
YXBoZW1lOgorICAgICAgICB0eXBlID0gVUJSS19DSEFSQUNURVI7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgR3JhbnVsYXJpdHk6OldvcmQ6CisgICAgICAgIHR5cGUgPSBVQlJLX1dPUkQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhbnVsYXJpdHk6OlNlbnRlbmNlOgorICAgICAgICB0
eXBlID0gVUJSS19TRU5URU5DRTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgbV9zZWdtZW50ZXIgPSBzdGQ6OnVuaXF1
ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4odWJya19vcGVuKHR5
cGUsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIDAsICZzdGF0dXMpKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRlciJfcyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRsLXNl
Z21lbnRlci8jc2VjLWludGwuc2VnbWVudGVyLnByb3RvdHlwZS5zZWdtZW50CitKU1ZhbHVlIElu
dGxTZWdtZW50ZXI6OnNlZ21lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBzdHJpbmdWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNTdHJp
bmcqIGpzU3RyaW5nID0gc3RyaW5nVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFN0cmluZyBzdHJpbmcgPSBqc1N0
cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gQm94PFZlY3RvcjxVQ2hh
cj4+OjpjcmVhdGUoc3RyaW5nLmNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkpOwor
CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBzZWdtZW50
ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRl
cj4odWJya19zYWZlQ2xvbmUobV9zZWdtZW50ZXIuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsICZz
dGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRz
Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgdWJya19zZXRUZXh0KHNlZ21l
bnRlci5nZXQoKSwgdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLT5kYXRhKCksIHVwY29udmVydGVkQ2hh
cmFjdGVycy0+c2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBp
bml0aWFsaXplIFNlZ21lbnRzIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICByZXR1cm4gSW50bFNlZ21lbnRzOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c2VnbWVudHNT
dHJ1Y3R1cmUoKSwgV1RGTW92ZShzZWdtZW50ZXIpLCBXVEZNb3ZlKHVwY29udmVydGVkQ2hhcmFj
dGVycyksIGpzU3RyaW5nLCBtX2dyYW51bGFyaXR5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtaW50bC5zZWdtZW50ZXIucHJvdG90eXBlLnJl
c29sdmVkb3B0aW9ucworSlNPYmplY3QqIEludGxTZWdtZW50ZXI6OnJlc29sdmVkT3B0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkpOworICAgIG9wdGlvbnMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Z3JhbnVsYXJpdHksIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgZ3JhbnVsYXJpdHlTdHJpbmcobV9ncmFudWxhcml0eSkpKTsKKyAgICByZXR1cm4g
b3B0aW9uczsKK30KKworQVNDSUlMaXRlcmFsIEludGxTZWdtZW50ZXI6OmdyYW51bGFyaXR5U3Ry
aW5nKEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQoreworICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkp
IHsKKyAgICBjYXNlIEdyYW51bGFyaXR5OjpHcmFwaGVtZToKKyAgICAgICAgcmV0dXJuICJncmFw
aGVtZSJfczsKKyAgICBjYXNlIEdyYW51bGFyaXR5OjpXb3JkOgorICAgICAgICByZXR1cm4gIndv
cmQiX3M7CisgICAgY2FzZSBHcmFudWxhcml0eTo6U2VudGVuY2U6CisgICAgICAgIHJldHVybiAi
c2VudGVuY2UiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworSlNPYmplY3QqIEludGxTZWdtZW50ZXI6OmNy
ZWF0ZVNlZ21lbnREYXRhT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3Ry
aW5nKiBzdHJpbmcsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJyZWFr
SXRlcmF0b3ImIHNlZ21lbnRlciwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5zZWdtZW50LCBqc1N1YnN0cmluZyhnbG9iYWxPYmplY3QsIHN0cmlu
Zywgc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4KSk7CisgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmluZGV4LCBqc051bWJlcihzdGFydEluZGV4KSk7
CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlucHV0LCBzdHJp
bmcpOworICAgIGlmIChncmFudWxhcml0eSA9PSBJbnRsU2VnbWVudGVyOjpHcmFudWxhcml0eTo6
V29yZCkgeworICAgICAgICBpbnQzMl90IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0dXMo
JnNlZ21lbnRlcik7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5pc1dvcmRMaWtlLCBqc0Jvb2xlYW4oIShydWxlU3RhdHVzID49IFVCUktfV09SRF9OT05F
ICYmIHJ1bGVTdGF0dXMgPD0gVUJSS19XT1JEX05PTkVfTElNSVQpKSk7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMGY0MjZjNDg5NzU2
YWFkNDk3MWU2OWM2ODExOWEzZjcwZTBmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmgKQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1
ZGUgPHVuaWNvZGUvdWJyay5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJz
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCit1c2luZyBVQnJlYWtJdGVyYXRvckRlbGV0ZXIgPSBJ
Q1VEZWxldGVyPHVicmtfY2xvc2U+OworCitjbGFzcyBJbnRsU2VnbWVudGVyIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZp
bmFsT2JqZWN0OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSB0cnVlOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgewor
ICAgICAgICBzdGF0aWNfY2FzdDxJbnRsU2VnbWVudGVyKj4oY2VsbCktPkludGxTZWdtZW50ZXI6
On5JbnRsU2VnbWVudGVyKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bFNlZ21lbnRlclNwYWNl
PG1vZGU+KCk7CisgICAgfQorCisgICAgZW51bSBjbGFzcyBHcmFudWxhcml0eSA6IHVpbnQ4X3Qg
eyBHcmFwaGVtZSwgV29yZCwgU2VudGVuY2UgfTsKKworICAgIHN0YXRpYyBJbnRsU2VnbWVudGVy
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgdm9pZCBpbml0aWFsaXplU2VnbWVudGVyKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBsb2NhbGVzVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKTsKKworICAgIEpTVmFsdWUg
c2VnbWVudChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpIGNvbnN0OworICAgIEpTT2JqZWN0KiBy
ZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAgIHN0YXRpYyBKU09i
amVjdCogY3JlYXRlU2VnbWVudERhdGFPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyos
IGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJyZWFrSXRlcmF0b3ImLCBH
cmFudWxhcml0eSk7CisKK3ByaXZhdGU6CisgICAgSW50bFNlZ21lbnRlcihWTSYsIFN0cnVjdHVy
ZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHN0YXRpYyBBU0NJSUxp
dGVyYWwgZ3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkpOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVudGVyOwor
ICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsgR3Jh
bnVsYXJpdHk6OkdyYXBoZW1lIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3Ry
dWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNGQ5YmU5MTFlMGZlNDEyNzdhNjliNzcwOWFjNTNiOWVi
ZmZjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rv
ci5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50
ZXJQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bFNlZ21lbnRl
ckNvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5s
dXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVy
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnNlZ21l
bnRlckNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50ZXJDb25z
dHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHNlZ21lbnRlckNvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9y
dGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvclN1cHBvcnRl
ZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJ
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IqIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNl
Z21lbnRlclByb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxT
ZWdtZW50ZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHNlZ21lbnRlclByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxTZWdtZW50ZXIoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKKworSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpJbnRsU2Vn
bWVudGVyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSwgY2FsbEludGxTZWdtZW50ZXIsIGNvbnN0cnVjdEludGxTZWdtZW50
ZXIpCit7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNlZ21lbnRlclByb3RvdHlwZSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIlNlZ21lbnRlciJfcywgTmFtZUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNlZ21lbnRlclByb3Rv
dHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOworICAgIHNlZ21lbnRlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hNDAyLyNzZWMtSW50bC5TZWdtZW50ZXIKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgp
KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5ld1RhcmdldCA9PSBjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmplY3QtPnNlZ21lbnRlclN0cnVjdHVyZSgpCisg
ICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5ld1RhcmdldCktPnNlZ21l
bnRlclN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgSW50bFNlZ21lbnRlciogc2VnbWVudGVyID0gSW50bFNlZ21lbnRlcjo6Y3JlYXRlKHZt
LCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChzZWdtZW50ZXIpOworCisgICAgc2NvcGUucmVsZWFz
ZSgpOworICAgIHNlZ21lbnRlci0+aW5pdGlhbGl6ZVNlZ21lbnRlcihnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLlNlZ21lbnRlcgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJTZWdtZW50ZXIiKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2Vn
bWVudGVyLyNzZWMtaW50bC5zZWdtZW50ZXIuc3VwcG9ydGVkbG9jYWxlc29mCisKKyAgICAvLyAx
LiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlU2VnbWVudGVyJS5bW2F2YWlsYWJsZUxvY2FsZXNd
XS4KKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsU2Vn
bWVudGVyQXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2Fs
ZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICBWZWN0b3I8U3RyaW5n
PiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMo
YXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyhnbG9i
YWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMSkpKSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhkYmIxZjNhMWY3YjVkNmFlMmVlMDcxMjdiNTVkYTc5MDNlMzBlYjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVu
dGVyQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFNlZ21lbnRlclByb3RvdHlwZTsK
KworY2xhc3MgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9uOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgSW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsU2VnbWVudGVy
UHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0
ZToKKyAgICBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bFNlZ21lbnRlclByb3RvdHlwZSopOworfTsKK1NU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rv
ciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YmJjMzQyYjgwMjliYmFjYTUzMWM2OWY0ZDY4OWU0OTM4ZWVjYmEyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21l
bnRlclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5oIgorCisjaW5j
bHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdt
ZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRlclByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQor
CisjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJJbnRsLlNlZ21lbnRlciIsICZCYXNlOjpzX2luZm8sICZzZWdtZW50ZXJQcm90b3R5cGVUYWJs
ZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsU2VnbWVudGVyUHJvdG90eXBlKSB9
OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50ZXJQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBz
ZWdtZW50ZXJQcm90b3R5cGVUYWJsZQorICBzZWdtZW50ICAgICAgICAgIEludGxTZWdtZW50ZXJQ
cm90b3R5cGVGdW5jU2VnbWVudCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcmVz
b2x2ZWRPcHRpb25zICBJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAg
ICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsU2VnbWVudGVyUHJvdG90eXBl
KiBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsU2VnbWVudGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFNlZ21lbnRlclByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1
cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKK30KKworSW50bFNlZ21lbnRlclByb3RvdHlwZTo6SW50bFNlZ21lbnRlclByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVy
aXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJ
T04oKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNz
ZWMtaW50bC5zZWdtZW50ZXIucHJvdG90eXBlLnNlZ21lbnQKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bFNlZ21lbnRlclByb3RvdHlwZUZ1bmNTZWdtZW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBzZWdtZW50ZXIgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdtZW50ZXIq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFzZWdtZW50ZXIpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNl
Z21lbnRlci5wcm90b3R5cGUuc2VnbWVudCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50ZXIiX3MpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5zZWdtZW50KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtSW50bC5TZWdtZW50ZXIucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsU2VnbWVudGVy
UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byogc2VnbWVudGVyID0ganNEeW5hbWljQ2FzdDxJbnRsU2VnbWVudGVyKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghc2VnbWVudGVyKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5TZWdtZW50ZXIucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50ZXIiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFs
T2JqZWN0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MmZkNTljZWY2YzZmMmIxNzQ3Y2I4NGE3MTljNzNjMzBiMjMxZDA2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlw
ZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsU2VnbWVudGVy
UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1By
b3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAg
eworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2VnbWVu
dGVyUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2
YXRlOgorICAgIEludGxTZWdtZW50ZXJQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg3MzcxZGU4MzI0OTc0MzIzZTA4NzczZDFmMDNmMmJjMTJmOGFlNmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCkBAIC0w
LDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkludGxTZWdtZW50cy5oIgorCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNs
dWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8dW5pY29kZS91Y3Vyci5oPgor
I2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VI
ZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFNlZ21l
bnRzOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxTZWdtZW50cykgfTsKKworSW50bFNlZ21lbnRzKiBJ
bnRsU2VnbWVudHM6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzdGQ6OnVu
aXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4mJiBzZWdtZW50
ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSlNTdHJpbmcqIHN0cmluZywgSW50bFNl
Z21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgYXV0byogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRzPih2bS5oZWFwKSkgSW50bFNl
Z21lbnRzKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoc2VnbWVudGVyKSwgV1RGTW92ZShidWZmZXIp
LCBncmFudWxhcml0eSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5nKTsK
KyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50czo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCitJbnRsU2VnbWVudHM6OkludGxTZWdtZW50cyhWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9y
RGVsZXRlcj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSW50bFNl
Z21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCisgICAgLCBtX3NlZ21lbnRlcihXVEZNb3ZlKHNlZ21lbnRlcikpCisgICAgLCBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQorewor
fQorCit2b2lkIEludGxTZWdtZW50czo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1N0cmluZyog
c3RyaW5nKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5o
ZXJpdHModm0sIGluZm8oKSkpOworICAgIG1fc3RyaW5nLnNldCh2bSwgdGhpcywgc3RyaW5nKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtaW50
bC5zZWdtZW50ZXIucHJvdG90eXBlLmNvbnRhaW5pbmcKK0pTVmFsdWUgSW50bFNlZ21lbnRzOjpj
b250YWluaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW5kZXhWYWx1
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgZG91YmxlIHZhbHVlID0gaW5kZXhWYWx1
ZS50b0ludGVnZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSBtX2J1ZmZlci0+c2l6ZSgp
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbnQzMl90IGluZGV4ID0gdG9J
bnQzMih2YWx1ZSk7CisKKyAgICAvLyBUaGUgcmVzdWx0IG9mIHVicmtfcHJlY2VkaW5nIGlzIGFs
d2F5cyAqc21hbGxlciogdGhhbiBvZmZzZXQsIG9yIFVCUktfRE9ORS4gSW4gdGhpcyBjYXNlLCB3
ZSBzaG91bGQgc2V0IHNjYW4gcG9zaXRpb24gd2l0aCBgaW5kZXggKyAxYC4KKyAgICAvLyBFdmVu
IGlmIGluZGV4ICsgMSBleGNlZWRzIGxlbmd0aCBvZiBzdHJpbmcgYnkgMSwgdGhpcyBpcyBkZXNp
cmFibGUgaWYgd2Ugd2FudCB0byBzY2FuIHRoZSBsYXN0IHNlZ21lbnQuCisgICAgaW50MzJfdCBz
dGFydEluZGV4ID0gdWJya19wcmVjZWRpbmcobV9zZWdtZW50ZXIuZ2V0KCksIGluZGV4ICsgMSk7
CisgICAgaWYgKHN0YXJ0SW5kZXggPT0gVUJSS19ET05FKQorICAgICAgICBzdGFydEluZGV4ID0g
MDsKKyAgICAvLyBUaGUgcmVzdWx0IG9mIHVicmtfZm9sbG93aW5nIGlzIGFsd2F5cyBncmVhdGVy
IHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuIFNjYW4gcG9zaXRpb24gc2hvdWxkIGJlIGBpbmRl
eGAuCisgICAgaW50MzJfdCBlbmRJbmRleCA9IHVicmtfZm9sbG93aW5nKG1fc2VnbWVudGVyLmdl
dCgpLCBpbmRleCk7CisgICAgaWYgKGVuZEluZGV4ID09IFVCUktfRE9ORSkKKyAgICAgICAgZW5k
SW5kZXggPSBtX2J1ZmZlci0+c2l6ZSgpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJl
dHVybiBJbnRsU2VnbWVudGVyOjpjcmVhdGVTZWdtZW50RGF0YU9iamVjdChnbG9iYWxPYmplY3Qs
IG1fc3RyaW5nLmdldCgpLCBzdGFydEluZGV4LCBlbmRJbmRleCwgKm1fc2VnbWVudGVyLCBtX2dy
YW51bGFyaXR5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVu
dGVyLyNzZWMtJXNlZ21lbnRzcHJvdG90eXBlJS1AQGl0ZXJhdG9yCitKU09iamVjdCogSW50bFNl
Z21lbnRzOjpjcmVhdGVTZWdtZW50SXRlcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisgICAgYXV0byBzZWdtZW50ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRl
cmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4odWJya19zYWZlQ2xvbmUobV9zZWdtZW50ZXIu
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRJdGVyYXRvciJfcyk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHVicmtfZmlyc3Qoc2VnbWVudGVyLmdldCgpKTsKKyAgICBy
ZXR1cm4gSW50bFNlZ21lbnRJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnNlZ21l
bnRJdGVyYXRvclN0cnVjdHVyZSgpLCBXVEZNb3ZlKHNlZ21lbnRlciksIG1fYnVmZmVyLCBtX3N0
cmluZy5nZXQoKSwgbV9ncmFudWxhcml0eSk7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRzOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsU2VnbWVudHMqPihjZWxsKTsKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fc3RyaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNjNjNzNi
YTQyNTY4MTU5ZTBhYTU5YjE2NjM4ZTU4NjczMzg1ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuaApAQCAtMCwwICsxLDY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsU2VnbWVudHMgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxP
YmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRy
dWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAg
ICAgIHN0YXRpY19jYXN0PEludGxTZWdtZW50cyo+KGNlbGwpLT5JbnRsU2VnbWVudHM6On5JbnRs
U2VnbWVudHMoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vi
c3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsU2VnbWVudHNTcGFjZTxtb2RlPigp
OworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudHMqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSosIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVy
PiYmLCBCb3g8VmVjdG9yPFVDaGFyPj4mJiwgSlNTdHJpbmcqLCBJbnRsU2VnbWVudGVyOjpHcmFu
dWxhcml0eSk7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTVmFs
dWUgY29udGFpbmluZyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgaW5kZXhWYWx1ZSk7CisgICAg
SlNPYmplY3QqIGNyZWF0ZVNlZ21lbnRJdGVyYXRvcihKU0dsb2JhbE9iamVjdCopOworCisgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcml2
YXRlOgorICAgIEludGxTZWdtZW50cyhWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxV
QnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPiYmLCBCb3g8VmVjdG9yPFVDaGFy
Pj4mJiwgSW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkpOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU1N0cmluZyopOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9y
LCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVudGVyOworICAgIEJveDxWZWN0b3I8VUNo
YXI+PiBtX2J1ZmZlcjsKKyAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fc3RyaW5nOworICAg
IEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzOTY1MGM0ODBjMTNjZTIyYWRk
Nzg4Y2EwOTU3YTU1NWQ0ZGJjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTAxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50
c1Byb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bFNlZ21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVyYXRvcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsU2VnbWVudHNQcm90b3R5cGUubHV0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFNlZ21lbnRzUHJvdG90eXBl
OjpzX2luZm8gPSB7ICIlU2VnbWVudHMlIiwgJkJhc2U6OnNfaW5mbywgJnNlZ21lbnRzUHJvdG90
eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFNlZ21lbnRzUHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50c1Byb3RvdHlwZS5sdXQuaAorQGJl
Z2luIHNlZ21lbnRzUHJvdG90eXBlVGFibGUKKyAgY29udGFpbmluZyAgICAgICBJbnRsU2VnbWVu
dHNQcm90b3R5cGVGdW5jQ29udGFpbmluZyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0Bl
bmQKKyovCisKK0ludGxTZWdtZW50c1Byb3RvdHlwZSogSW50bFNlZ21lbnRzUHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxJbnRsU2VnbWVudHNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudHNQcm90b3R5cGUo
dm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50c1By
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsU2VnbWVudHNQcm90b3R5cGU6OkludGxTZWdt
ZW50c1Byb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxTZWdtZW50c1Byb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkp
OworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBJbnRsU2VnbWVudHNQcm90b3R5cGVGdW5jSXRlcmF0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtJXNl
Z21lbnRzcHJvdG90eXBlJS5jb250YWluaW5nCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNDb250YWluaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvKiBzZWdtZW50cyA9IGpzRHluYW1pY0Nhc3Q8SW50bFNlZ21lbnRzKj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghc2VnbWVudHMpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIlU2VnbWVudHMucHJvdG90
eXBlJS5jb250YWluaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIFNlZ21lbnRzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jb250YWluaW5nKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LWludGwtc2VnbWVudGVyLyNzZWMtJXNlZ21lbnRzcHJvdG90eXBlJS1AQGl0ZXJhdG9yCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVyYXRv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogc2VnbWVudHMgPSBqc0R5bmFtaWNDYXN0
PEludGxTZWdtZW50cyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXNl
Z21lbnRzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiJVNlZ21lbnRzLnByb3RvdHlwZSVbQEBpdGVyYXRvcl0gY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgU2VnbWVudHMiX3MpOworCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudHMtPmNyZWF0
ZVNlZ21lbnRJdGVyYXRvcihnbG9iYWxPYmplY3QpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRz
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQ
cm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjQ0NGRhMTM5ZGI1OTliZTlkZDllNTBlYWExOTkyNDVl
NWE0NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFNlZ21lbnRzUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEludGxTZWdtZW50c1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoSW50bFNlZ21lbnRzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2
bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudHNQcm90
b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRsU2VnbWVudHNQ
cm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDM5MjM1ZTIz
Y2QzNGM3MmJmMTY4NmQ2MDUzYmVhZGM1NWY3MGMzNjUuLjVhYjdmNTI4OWI0ZGE5ZWU1NTMyNzJi
MDNkOGIzOGYyYjQ1YmM5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg2LDYgKzg2LDEyIEBACiAjaW5jbHVkZSAiSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
IgogI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRsU2Vn
bWVudGVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5jbHVkZSAi
SW50bFNlZ21lbnRzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVy
LmgiCkBAIC0xMDE4LDYgKzEwMjQsMjQgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAg
ICAgICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZSA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShpbml0
LnZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5p
dC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiAg
ICAgICAgICAgICBpbml0LnNldChJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsK
ICAgICAgICAgfSk7CisgICAgbV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUuaW5pdExhdGVyKAor
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlw
ZSogc2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlID0gSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlKGluaXQudm0sIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQcm90
b3R5cGUoKSkpOworICAgICAgICAgICAgaW5pdC5zZXQoSW50bFNlZ21lbnRJdGVyYXRvcjo6Y3Jl
YXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgc2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlKSk7CisgICAgICAgIH0pOworICAgIG1fc2VnbWVudGVyU3RydWN0dXJlLmluaXRMYXRlcigK
KyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNl
Z21lbnRlclByb3RvdHlwZSA9IEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZt
LCBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICBp
bml0LnNldChJbnRsU2VnbWVudGVyOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2Jq
ZWN0LCBzZWdtZW50ZXJQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9zZWdtZW50c1N0
cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1
cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRsU2Vn
bWVudHNQcm90b3R5cGUqIHNlZ21lbnRzUHJvdG90eXBlID0gSW50bFNlZ21lbnRzUHJvdG90eXBl
OjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsU2VnbWVudHNQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0
UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxTZWdtZW50czo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgc2VnbWVudHNQcm90b3R5cGUpKTsKKyAg
ICAgICAgfSk7CiAgICAgbV9kZWZhdWx0Q29sbGF0b3IuaW5pdExhdGVyKAogICAgICAgICBbXSAo
Y29uc3QgSW5pdGlhbGl6ZXI8SW50bENvbGxhdG9yPiYgaW5pdCkgewogICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpOwpAQCAtMTg1Miw2ICsxODc2LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmpl
Y3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
cGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9y
ZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVj
dC0+bV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09i
amVjdC0+bV9zZWdtZW50ZXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVj
dC0+bV9zZWdtZW50c1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKIAogICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzZWRkYWUzMjdjMmViZGY2OWIx
MzIzZjg4NjA0NGEwYjY2MDQzYTg0Li45OTllNjhiNDYwOGQ2ZWU1ZjY3YmI0ZWQ4YTA4ZmU5NTFh
ZDM2MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTMwMiw2ICszMDIsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcmVsYXRpdmVUaW1lRm9y
bWF0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJl
PiBtX3NlZ21lbnRJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9zZWdtZW50ZXJTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fc2VnbWVudHNTdHJ1Y3R1cmU7CiAKICAgICBX
cml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKICAg
ICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJGdW5jdGlvbjsK
QEAgLTgwNSw2ICs4MDgsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGx1
cmFsUnVsZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdldCh0
aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3Ry
dWN0dXJlKiBzZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3NlZ21lbnRJdGVy
YXRvclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHNlZ21lbnRlclN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fc2VnbWVudGVyU3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0
cnVjdHVyZSogc2VnbWVudHNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3NlZ21lbnRzU3RydWN0dXJl
LmdldCh0aGlzKTsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1
Z2dpbmdFbmFibGVkKGJvb2wpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVtb3RlRGVi
dWdnaW5nRW5hYmxlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKaW5kZXggZTBjNGVkNGU3YzljN2QwNjQwZTI0ZjU5MTc4M2Q1ZWI3YzZhNThm
OC4uN2FlNTZlNGZjNDUzMWVkZmVmYzRlZDQ2MDQ1OTlhYzgzYzczMWQ3NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00OTEsNiArNDkxLDcgQEAg
Y29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAg
ICB2KEJvb2wsIHVzZVdlYWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWFrUmVm
IGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgdHJ1ZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoQm9vbCwg
dXNlSW50bERpc3BsYXlOYW1lcywgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5EaXNw
bGF5TmFtZXMgY29uc3RydWN0b3IuIikgXAorICAgIHYoQm9vbCwgdXNlSW50bFNlZ21lbnRlciwg
ZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5TZWdtZW50ZXIgY29uc3RydWN0b3IuIikg
XAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWws
ICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmls
aW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0
byBiZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNlLCBO
b3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2JqZWN0
IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBmb3JjZU1pbmlW
TU1vZGUsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1pbmkgVk0gbW9k
ZSBvbi4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMWM5YTUwY2Zi
NDcxYzZiN2E5YjNmYTk2NDJhOWFkNTBkMWFhZmVhZC4uNzgxMTQxOGIxNmNhMWU1YWE0MTA0MzJh
NzFiZjdkZGM0MmM3MWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAt
NzEsNiArNzEsOSBAQAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJ
bnRsUGx1cmFsUnVsZXMuaCIKICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisj
aW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIu
aCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKICNpbmNsdWRlICJJc29IZWFwQ2VsbFR5cGUu
aCIKICNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSklUQ29k
ZS5oIgpAQCAtMzEyLDYgKzMxNSw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogICAgICwgaW50
bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTnVt
YmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4oKSkKICAgICAsIGludGxSZWxhdGl2ZVRp
bWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFJlbGF0aXZl
VGltZUZvcm1hdD4oKSkKKyAgICAsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUoSXNv
SGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRJdGVyYXRvcj4oKSkKKyAgICAsIGludGxT
ZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRl
cj4oKSkKKyAgICAsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNy
ZWF0ZTxJbnRsU2VnbWVudHM+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICwgd2Vi
QXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SlNX
ZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKICAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2Vs
bFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkKQEAg
LTE1MDgsNiArMTUxNCw5IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUuCiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCBpbnRsTnVt
YmVyRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0KQogRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCBpbnRs
UGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxSdWxlcykKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3Bh
Y2UsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBlLmdl
dCgpLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlwZS5n
ZXQoKSwgSW50bFNlZ21lbnRlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLmdldCgpLCBJ
bnRsU2VnbWVudHMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUb1dhc21JQ0NhbGxlZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3NlbWJseUNvZGVC
bG9ja0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDow
eDlhZDk5NWNkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA0NDVmZWNmZmJlN2M2
NGJjOWFiZjgwNzY0MzNmYjdkYmY4YzE0ODRiLi5hNGIzMzlhYzY2ZWM3MDA2ZjgzMDhlZmUyOTNl
MjAyYzIyNzhlYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEzMyw2ICsx
MzMsOSBAQCBjbGFzcyBJbnRsTG9jYWxlOwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNz
IEludGxQbHVyYWxSdWxlczsKIGNsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ7CitjbGFzcyBJ
bnRsU2VnbWVudEl0ZXJhdG9yOworY2xhc3MgSW50bFNlZ21lbnRlcjsKK2NsYXNzIEludGxTZWdt
ZW50czsKIGNsYXNzIEpTQVBJR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNBUElXcmFwcGVyR2xvYmFs
T2JqZWN0OwogY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0OwpAQCAtNDA3LDYgKzQxMCw5IEBAIGNs
YXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxp
bmtlZExpc3ROb2RlPFZNPiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
aW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudEl0ZXJhdG9y
SGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxT
ZWdtZW50ZXJIZWFwQ2VsbFR5cGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUNvZGVCbG9ja0hl
YXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3Nl
bWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOwpAQCAtNTY2LDYgKzU3Miw5IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFZNPiB7CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTnVt
YmVyRm9ybWF0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsUGx1cmFsUnVsZXNTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50ZXJTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50c1NwYWNlKQogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpz
VG9XYXNtSUNDYWxsZWVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
aW5kZXggYTc3ZmQ4YzY0MGE0OTY0ODI5NzdiOWJlYzI4NzZkYTM1NWUyMmFhZS4uNDI1ZDRkNThj
NWJiNTc3MjY2ZGE3M2VhYzVjYjU2OTQ5NWFhZTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcApAQCAtNDI2LDcgKzQyNiw3IEBAIGJvb2wgU3RyaW5nOjpwZXJjZW50YWdlKGludCYgcmVz
dWx0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1WZWN0b3I8VUNoYXI+IFN0cmluZzo6
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBjb25zdAorVmVjdG9yPFVDaGFyPiBTdHJp
bmc6OmNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkgY29uc3QKIHsKICAgICBWZWN0
b3I8VUNoYXI+IHJlc3VsdDsKIApAQCAtNDQxLDEzICs0NDEsMTggQEAgVmVjdG9yPFVDaGFyPiBT
dHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29uc3QKICAgICAgICAgICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYgPSBtX2ltcGwtPmNoYXJhY3RlcnMxNigpOwogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXJzMTYsIG1faW1wbC0+bGVuZ3RoKCkpOwog
ICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZCgwKTsKICAgICB9CiAKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitWZWN0b3I8VUNoYXI+IFN0cmluZzo6Y2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKSBjb25zdAoreworICAgIGF1dG8gcmVzdWx0ID0gY2hhcmFjdGVyc1dpdGhv
dXROdWxsVGVybWluYXRpb24oKTsKKyAgICByZXN1bHQuYXBwZW5kKDApOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIFN0cmluZyBTdHJpbmc6Om51bWJlcihpbnQgbnVtYmVyKQogewogICAgIHJl
dHVybiBudW1iZXJUb1N0cmluZ1NpZ25lZDxTdHJpbmc+KG51bWJlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCBmOTRlZGQ5MzkwNDQ2NTU3Zjg3NmY2MDZiYjJjNzMxZGM2OThmNjU0Li4w
ZjE2NjJkZjRiYzg0MGMzN2Q3ZmZkNzU1YWMwNWE0NTIxMDZjNzExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKQEAgLTIwMiw2ICsyMDIsNyBAQCBjbGFzcyBTdHJpbmcgZmluYWwgewogICAgIHNp
emVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQgPSBN
YXhMZW5ndGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3Ry
aW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhvdXROdWxs
VGVybWluYXRpb24oKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIGNo
YXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxYWQzYWYzMjIyMjJhNTMzNWRi
NTg4OGIxNTFjYzkyYzg1ODNjOTQuLmVlMDQyYWZhMmM1OTUwZDhiMmU1ZmFhMzMxZmVhY2NlZWYw
NTU2NzcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDctMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgSW50bC5TZWdtZW50ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzYzOAorCisgICAgICAg
IFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1zZWdt
ZW50ZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkTm90
VGhyb3cpOgorICAgICAgICAoZnVuYyk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoK
KyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIwLTA3LTI1ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRlc3QyNjIK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtc2VnbWVudGVyLmpzIGIvSlNUZXN0cy9z
dHJlc3MvaW50bC1zZWdtZW50ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg1MDZmMzAzNTNjMDExZjRmYWY2
YmRiYjVkZmRhODM3ZDk5NWRiYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtc2VnbWVudGVyLmpzCkBAIC0wLDAgKzEsMzMzIEBACisvL0AgcnVuRGVmYXVsdCgiLS11c2VJ
bnRsU2VnbWVudGVyPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkTm90VGhyb3coZnVu
YykgeworICAgIGZ1bmMoKTsKK30KKworeworICAgIHNob3VsZEJlKEludGwuU2VnbWVudGVyIGlu
c3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworICAgIHNob3VsZEJlKEludGwuU2VnbWVudGVyLmxl
bmd0aCwgMCk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLlNlZ21lbnRlciwgJ3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hvdWxk
QmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlNlZ21lbnRlciwgJ3Byb3Rv
dHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEludGwuU2VnbWVudGVyLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxl
LCBmYWxzZSk7CisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiZnIiKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShzZWdtZW50ZXIucmVzb2x2ZWRPcHRpb25zKCkp
LCBgeyJsb2NhbGUiOiJmciIsImdyYW51bGFyaXR5IjoiZ3JhcGhlbWUifWApOworICAgIHNob3Vs
ZEJlKHNlZ21lbnRlci50b1N0cmluZygpLCBgW29iamVjdCBJbnRsLlNlZ21lbnRlcl1gKTsKKyAg
ICBzaG91bGROb3RUaHJvdygoKSA9PiBuZXcgSW50bC5TZWdtZW50ZXIoKSk7Cit9CisKK3sKKyAg
ICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtncmFudWxhcml0eTog
IndvcmQifSk7CisKKyAgICBsZXQgaW5wdXQgPSAiTW9pPyAgTidlc3QtY2UgcGFzLiI7CisgICAg
bGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3Vs
dHMgPSBbCisgICAgICAgIFsgMCwgMywgIk1vaSIsIHRydWUgXSwKKyAgICAgICAgWyAzLCA0LCAi
PyIsIGZhbHNlIF0sCisgICAgICAgIFsgNCwgNiwgIiAgIiwgZmFsc2UgXSwKKyAgICAgICAgWyA2
LCAxMSwgIk4nZXN0IiwgdHJ1ZSBdLAorICAgICAgICBbIDExLCAxMiwgIi0iLCBmYWxzZSBdLAor
ICAgICAgICBbIDEyLCAxNCwgImNlIiwgdHJ1ZSBdLAorICAgICAgICBbIDE0LCAxNSwgIiAiLCBm
YWxzZSBdLAorICAgICAgICBbIDE1LCAxOCwgInBhcyIsIHRydWUgXSwKKyAgICAgICAgWyAxOCwg
MTksICIuIiwgZmFsc2UgXSwKKyAgICBdOworICAgIGxldCBjdXJzb3IgPSAwOworICAgIGZvciAo
bGV0IHtzZWdtZW50LCBpbmRleCwgaXNXb3JkTGlrZX0gb2Ygc2VnbWVudHMpIHsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IHJlc3VsdHNbY3Vyc29yKytdOworICAgICAgICBzaG91bGRCZShyZXN1bHRb
MF0sIGluZGV4KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCBpbmRleCArIHNlZ21lbnQu
bGVuZ3RoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzJdLCBzZWdtZW50KTsKKyAgICAgICAg
c2hvdWxkQmUocmVzdWx0WzNdLCBpc1dvcmRMaWtlKTsKKyAgICB9CisKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShJbnRsLlNlZ21lbnRlci5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2ZyJykpLCBg
WyJmciJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudGVyLnJlc29sdmVk
T3B0aW9ucygpKSwgYHsibG9jYWxlIjoiZnIiLCJncmFudWxhcml0eSI6IndvcmQifWApOworfQor
Cit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiZnIiLCB7Z3JhbnVs
YXJpdHk6ICJncmFwaGVtZSJ9KTsKKworICAgIGxldCBpbnB1dCA9ICJNb2k/ICBOJ2VzdC1jZSBw
YXMuIjsKKyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAg
ICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVudCwgaW5kZXgsIGlzV29yZExp
a2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAgIGxldCBjdXJyZW50ID0gY3Vyc29yKys7CisgICAg
ICAgIHNob3VsZEJlKHNlZ21lbnQsIGlucHV0W2N1cnJlbnRdKTsKKyAgICAgICAgc2hvdWxkQmUo
aW5kZXgsIGN1cnJlbnQpOworICAgICAgICBzaG91bGRCZShpc1dvcmRMaWtlLCB1bmRlZmluZWQp
OworICAgIH0KKworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRlci5yZXNvbHZl
ZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImZyIiwiZ3JhbnVsYXJpdHkiOiJncmFwaGVtZSJ9YCk7
Cit9CisKK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJlbiIsIHtn
cmFudWxhcml0eTogInNlbnRlbmNlIn0pOworCisgICAgbGV0IGlucHV0ID0gIlBlcmZvcm1hbmNl
IGlzIGEgdG9wIHByaW9yaXR5IGZvciBXZWJLaXQuIFdlIGFkaGVyZSB0byBhIHNpbXBsZSBkaXJl
Y3RpdmUgZm9yIGFsbCB3b3JrIHdlIGRvIG9uIFdlYktpdDogVGhlIHdheSB0byBtYWtlIGEgcHJv
Z3JhbSBmYXN0ZXIgaXMgdG8gbmV2ZXIgbGV0IGl0IGdldCBzbG93ZXIuIjsKKyAgICBsZXQgc2Vn
bWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVzdWx0cyA9IFsK
KyAgICAgICAgWyAwLCA0MiwgIlBlcmZvcm1hbmNlIGlzIGEgdG9wIHByaW9yaXR5IGZvciBXZWJL
aXQuICIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDQyLCAxNjcsICJXZSBhZGhlcmUgdG8gYSBz
aW1wbGUgZGlyZWN0aXZlIGZvciBhbGwgd29yayB3ZSBkbyBvbiBXZWJLaXQ6IFRoZSB3YXkgdG8g
bWFrZSBhIHByb2dyYW0gZmFzdGVyIGlzIHRvIG5ldmVyIGxldCBpdCBnZXQgc2xvd2VyLiIsIHVu
ZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3Nl
Z21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVz
dWx0ID0gcmVzdWx0c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5k
ZXgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgp
OworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRC
ZShyZXN1bHRbM10sIGlzV29yZExpa2UpOworICAgIH0KKworICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KHNlZ21lbnRlci5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwiZ3Jh
bnVsYXJpdHkiOiJzZW50ZW5jZSJ9YCk7Cit9CisKKy8vIGxhbmd1YWdlcyB3aXRob3V0IHNwYWNl
cy4KK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJqYSIsIHtncmFu
dWxhcml0eTogIndvcmQifSk7CisKKyAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lr
aS9JX0FtX2FfQ2F0CisgICAgbGV0IGlucHV0ID0gIuWQvui8qeOBr+eMq+OBp+OBguOCi+OAguWQ
jeWJjeOBr+OBvuOBoOeEoeOBhOOAguOBqeOBk+OBp+eUn+OCjOOBn+OBi+OBqOOCk+OBqOimi+W9
k+OBjOOBpOOBi+OBrOOAgiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQo
aW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgMiwgIuWQvui8qSIs
IHRydWUgXSwKKyAgICAgICAgWyAyLCAzLCAi44GvIiwgdHJ1ZSBdLAorICAgICAgICBbIDMsIDQs
ICLnjKsiLCB0cnVlIF0sCisgICAgICAgIFsgNCwgNSwgIuOBpyIsIHRydWUgXSwKKyAgICAgICAg
WyA1LCA3LCAi44GC44KLIiwgdHJ1ZSBdLAorICAgICAgICBbIDcsIDgsICLjgIIiLCBmYWxzZSBd
LAorICAgICAgICBbIDgsIDEwLCAi5ZCN5YmNIiwgdHJ1ZSBdLAorICAgICAgICBbIDEwLCAxMSwg
IuOBryIsIHRydWUgXSwKKyAgICAgICAgWyAxMSwgMTMsICLjgb7jgaAiLCB0cnVlIF0sCisgICAg
ICAgIFsgMTMsIDE1LCAi54Sh44GEIiwgdHJ1ZSBdLAorICAgICAgICBbIDE1LCAxNiwgIuOAgiIs
IGZhbHNlIF0sCisgICAgICAgIFsgMTYsIDE4LCAi44Gp44GTIiwgdHJ1ZSBdLAorICAgICAgICBb
IDE4LCAxOSwgIuOBpyIsIHRydWUgXSwKKyAgICAgICAgWyAxOSwgMjEsICLnlJ/jgowiLCB0cnVl
IF0sCisgICAgICAgIFsgMjEsIDIzLCAi44Gf44GLIiwgdHJ1ZSBdLAorICAgICAgICBbIDIzLCAy
NiwgIuOBqOOCk+OBqCIsIHRydWUgXSwKKyAgICAgICAgWyAyNiwgMjgsICLopovlvZMiLCB0cnVl
IF0sCisgICAgICAgIFsgMjgsIDI5LCAi44GMIiwgdHJ1ZSBdLAorICAgICAgICBbIDI5LCAzMCwg
IuOBpCIsIHRydWUgXSwKKyAgICAgICAgWyAzMCwgMzEsICLjgYsiLCB0cnVlIF0sCisgICAgICAg
IFsgMzEsIDMyLCAi44GsIiwgdHJ1ZSBdLAorICAgICAgICBbIDMyLCAzMywgIuOAgiIsIGZhbHNl
IF0sCisgICAgXTsKKyAgICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVudCwg
aW5kZXgsIGlzV29yZExpa2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAgIGxldCByZXN1bHQgPSBy
ZXN1bHRzW2N1cnNvcisrXTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCBpbmRleCk7Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgaW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7CisgICAg
ICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgc2VnbWVudCk7CisgICAgICAgIHNob3VsZEJlKHJlc3Vs
dFszXSwgaXNXb3JkTGlrZSk7CisgICAgfQorfQorCit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5l
dyBJbnRsLlNlZ21lbnRlcigiamEiLCB7Z3JhbnVsYXJpdHk6ICJncmFwaGVtZSJ9KTsKKworICAg
IC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lfQW1fYV9DYXQKKyAgICBsZXQgaW5w
dXQgPSAi5ZC+6Lyp44Gv54yr44Gn44GC44KL44CC5ZCN5YmN44Gv44G+44Gg54Sh44GE44CC44Gp
44GT44Gn55Sf44KM44Gf44GL44Go44KT44Go6KaL5b2T44GM44Gk44GL44Gs44CCIjsKKyAgICBs
ZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVzdWx0
cyA9IFsKKyAgICAgICAgWyAwLCAxLCAi5ZC+IiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgMSwg
MiwgIui8qSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIsIDMsICLjga8iLCB1bmRlZmluZWQg
XSwKKyAgICAgICAgWyAzLCA0LCAi54yrIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgNCwgNSwg
IuOBpyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDUsIDYsICLjgYIiLCB1bmRlZmluZWQgXSwK
KyAgICAgICAgWyA2LCA3LCAi44KLIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgNywgOCwgIuOA
giIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDgsIDksICLlkI0iLCB1bmRlZmluZWQgXSwKKyAg
ICAgICAgWyA5LCAxMCwgIuWJjSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDEwLCAxMSwgIuOB
ryIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDExLCAxMiwgIuOBviIsIHVuZGVmaW5lZCBdLAor
ICAgICAgICBbIDEyLCAxMywgIuOBoCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDEzLCAxNCwg
IueEoSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE0LCAxNSwgIuOBhCIsIHVuZGVmaW5lZCBd
LAorICAgICAgICBbIDE1LCAxNiwgIuOAgiIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE2LCAx
NywgIuOBqSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE3LCAxOCwgIuOBkyIsIHVuZGVmaW5l
ZCBdLAorICAgICAgICBbIDE4LCAxOSwgIuOBpyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE5
LCAyMCwgIueUnyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIwLCAyMSwgIuOCjCIsIHVuZGVm
aW5lZCBdLAorICAgICAgICBbIDIxLCAyMiwgIuOBnyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBb
IDIyLCAyMywgIuOBiyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIzLCAyNCwgIuOBqCIsIHVu
ZGVmaW5lZCBdLAorICAgICAgICBbIDI0LCAyNSwgIuOCkyIsIHVuZGVmaW5lZCBdLAorICAgICAg
ICBbIDI1LCAyNiwgIuOBqCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI2LCAyNywgIuimiyIs
IHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI3LCAyOCwgIuW9kyIsIHVuZGVmaW5lZCBdLAorICAg
ICAgICBbIDI4LCAyOSwgIuOBjCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI5LCAzMCwgIuOB
pCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDMwLCAzMSwgIuOBiyIsIHVuZGVmaW5lZCBdLAor
ICAgICAgICBbIDMxLCAzMiwgIuOBrCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDMyLCAzMywg
IuOAgiIsIHVuZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9y
IChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAg
ICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3Vs
dFswXSwgaW5kZXgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVu
dC5sZW5ndGgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAg
ICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29yZExpa2UpOworICAgIH0KK30KKworeworICAgIGxl
dCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAic2Vu
dGVuY2UifSk7CisKKyAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JX0FtX2Ff
Q2F0CisgICAgbGV0IGlucHV0ID0gIuWQvui8qeOBr+eMq+OBp+OBguOCi+OAguWQjeWJjeOBr+OB
vuOBoOeEoeOBhOOAguOBqeOBk+OBp+eUn+OCjOOBn+OBi+OBqOOCk+OBqOimi+W9k+OBjOOBpOOB
i+OBrOOAgiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOwor
CisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgOCwgIuWQvui8qeOBr+eMq+OBp+OB
guOCi+OAgiIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDgsIDE2LCAi5ZCN5YmN44Gv44G+44Gg
54Sh44GE44CCIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgMTYsIDMzLCAi44Gp44GT44Gn55Sf
44KM44Gf44GL44Go44KT44Go6KaL5b2T44GM44Gk44GL44Gs44CCIiwgdW5kZWZpbmVkIF0sCisg
ICAgXTsKKyAgICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVudCwgaW5kZXgs
IGlzV29yZExpa2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAgIGxldCByZXN1bHQgPSByZXN1bHRz
W2N1cnNvcisrXTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCBpbmRleCk7CisgICAgICAg
IHNob3VsZEJlKHJlc3VsdFsxXSwgaW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7CisgICAgICAgIHNo
b3VsZEJlKHJlc3VsdFsyXSwgc2VnbWVudCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFszXSwg
aXNXb3JkTGlrZSk7CisgICAgfQorfQorCisvLyBTdXJyb2dhdGUgcGFpcnMuCit7CisgICAgbGV0
IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiamEiLCB7Z3JhbnVsYXJpdHk6ICJncmFw
aGVtZSJ9KTsKKyAgICBsZXQgaW5wdXQgPSAi8KCut+mHjuWutiI7CisgICAgbGV0IHNlZ21lbnRz
ID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAg
ICAgIFsgMCwgMiwgIvCgrrciLCB1bmRlZmluZWQgXSwKKyAgICAgICAgWyAyLCAzLCAi6YeOIiwg
dW5kZWZpbmVkIF0sCisgICAgICAgIFsgMywgNCwgIuWutiIsIHVuZGVmaW5lZCBdLAorICAgIF07
CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dv
cmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJz
b3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91
bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRC
ZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29y
ZExpa2UpOworICAgIH0KK30KKworeworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdt
ZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAid29yZCJ9KTsKKyAgICBsZXQgaW5wdXQgPSAi8KCu
t+mHjuWutiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOwor
CisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgMiwgIvCgrrciLCB0cnVlIF0sCisg
ICAgICAgIFsgMiwgNCwgIumHjuWutiIsIHRydWUgXSwKKyAgICBdOworICAgIGxldCBjdXJzb3Ig
PSAwOworICAgIGZvciAobGV0IHtzZWdtZW50LCBpbmRleCwgaXNXb3JkTGlrZX0gb2Ygc2VnbWVu
dHMpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbY3Vyc29yKytdOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbMF0sIGluZGV4KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCBp
bmRleCArIHNlZ21lbnQubGVuZ3RoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzJdLCBzZWdt
ZW50KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzNdLCBpc1dvcmRMaWtlKTsKKyAgICB9Cit9
CisKK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJqYSIsIHtncmFu
dWxhcml0eTogInNlbnRlbmNlIn0pOworICAgIGxldCBpbnB1dCA9ICLwoK636YeO5a62IjsKKyAg
ICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVz
dWx0cyA9IFsKKyAgICAgICAgWyAwLCA0LCAi8KCut+mHjuWutiIsIHVuZGVmaW5lZCBdLAorICAg
IF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBp
c1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tj
dXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91
bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlz
V29yZExpa2UpOworICAgIH0KK30KKworeworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5T
ZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAiZ3JhcGhlbWUifSk7CisgICAgbGV0IGlucHV0
ID0gIvCgrrfph47lrrYiOworICAgIGxldCBzZWdtZW50cyA9IHNlZ21lbnRlci5zZWdtZW50KGlu
cHV0KTsKKworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmco
MCkpLCBgeyJzZWdtZW50Ijoi8KCutyIsImluZGV4IjowLCJpbnB1dCI6IvCgrrfph47lrrYifWAp
OworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmcoMSkpLCBg
eyJzZWdtZW50Ijoi8KCutyIsImluZGV4IjowLCJpbnB1dCI6IvCgrrfph47lrrYifWApOworICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmcoMikpLCBgeyJzZWdt
ZW50Ijoi6YeOIiwiaW5kZXgiOjIsImlucHV0Ijoi8KCut+mHjuWutiJ9YCk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmluZygzKSksIGB7InNlZ21lbnQiOiLl
rrYiLCJpbmRleCI6MywiaW5wdXQiOiLwoK636YeO5a62In1gKTsKKyAgICBzaG91bGRCZShKU09O
LnN0cmluZ2lmeShzZWdtZW50cy5jb250YWluaW5nKDQpKSwgdW5kZWZpbmVkKTsKK30KKworewor
ICAgIC8vIOKUgzAgMSAyIDMgNCA14pSDNuKUgzfilIM44pSDOQorICAgIC8vIOKUg0EgbCBsIG8g
biBz4pSDLeKUg3nilIMh4pSDCisgICAgbGV0IGlucHV0ID0gIkFsbG9ucy15ISI7CisKKyAgICBs
ZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtncmFudWxhcml0eTogIndv
cmQifSk7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworICAg
IGxldCBjdXJyZW50ID0gdW5kZWZpbmVkOworCisgICAgY3VycmVudCA9IHNlZ21lbnRzLmNvbnRh
aW5pbmcoMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21l
bnQiOiJBbGxvbnMiLCJpbmRleCI6MCwiaW5wdXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtlIjp0
cnVlfWApOworCisgICAgY3VycmVudCA9IHNlZ21lbnRzLmNvbnRhaW5pbmcoNSk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiJBbGxvbnMiLCJpbmRl
eCI6MCwiaW5wdXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtlIjp0cnVlfWApOworCisgICAgY3Vy
cmVudCA9IHNlZ21lbnRzLmNvbnRhaW5pbmcoNik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiItIiwiaW5kZXgiOjYsImlucHV0IjoiQWxsb25zLXkh
IiwiaXNXb3JkTGlrZSI6ZmFsc2V9YCk7CisKKyAgICBjdXJyZW50ID0gc2VnbWVudHMuY29udGFp
bmluZyhjdXJyZW50LmluZGV4ICsgY3VycmVudC5zZWdtZW50Lmxlbmd0aCk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiJ5IiwiaW5kZXgiOjcsImlu
cHV0IjoiQWxsb25zLXkhIiwiaXNXb3JkTGlrZSI6dHJ1ZX1gKTsKKworICAgIGN1cnJlbnQgPSBz
ZWdtZW50cy5jb250YWluaW5nKGN1cnJlbnQuaW5kZXggKyBjdXJyZW50LnNlZ21lbnQubGVuZ3Ro
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW50KSwgYHsic2VnbWVudCI6IiEi
LCJpbmRleCI6OCwiaW5wdXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtlIjpmYWxzZX1gKTsKKwor
ICAgIGN1cnJlbnQgPSBzZWdtZW50cy5jb250YWluaW5nKGN1cnJlbnQuaW5kZXggKyBjdXJyZW50
LnNlZ21lbnQubGVuZ3RoKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW50KSwg
dW5kZWZpbmVkKTsKKyAgICAvLyDihpIgdW5kZWZpbmVkCit9Cit7CisgICAgbGV0IGlucHV0ID0g
IiI7CisKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtncmFu
dWxhcml0eTogIndvcmQifSk7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQo
aW5wdXQpOworCisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmlu
ZygwKSksIHVuZGVmaW5lZCk7CisgICAgbGV0IHJlc3VsdHMgPSBBcnJheS5mcm9tKHNlZ21lbnRz
W1N5bWJvbC5pdGVyYXRvcl0oKSk7CisgICAgc2hvdWxkQmUocmVzdWx0cy5sZW5ndGgsIDApOwor
fQoreworICAgIGxldCBpbnB1dCA9ICIgIjsKKworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50
bC5TZWdtZW50ZXIoImZyIiwge2dyYW51bGFyaXR5OiAid29yZCJ9KTsKKyAgICBsZXQgc2VnbWVu
dHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShzZWdtZW50cy5jb250YWluaW5nKDApKSwgYHsic2VnbWVudCI6IiAiLCJpbmRleCI6MCwi
aW5wdXQiOiIgIiwiaXNXb3JkTGlrZSI6ZmFsc2V9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoc2VnbWVudHMuY29udGFpbmluZygxKSksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmluZygyKSksIHVuZGVmaW5lZCk7CisgICAg
bGV0IHJlc3VsdHMgPSBBcnJheS5mcm9tKHNlZ21lbnRzW1N5bWJvbC5pdGVyYXRvcl0oKSk7Cisg
ICAgc2hvdWxkQmUocmVzdWx0cy5sZW5ndGgsIDEpOworICAgIGxldCB7c2VnbWVudCwgaW5kZXgs
IGlzV29yZExpa2V9ID0gcmVzdWx0c1swXTsKKyAgICBzaG91bGRCZSgwLCBpbmRleCk7CisgICAg
c2hvdWxkQmUoMSwgaW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7CisgICAgc2hvdWxkQmUoIiAiLCBz
ZWdtZW50KTsKKyAgICBzaG91bGRCZShmYWxzZSwgaXNXb3JkTGlrZSk7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwKaW5kZXggZmE5M2NhODRjM2ZlNGU2M2EyMDBlOTJiZmMwNTRmZjJjNWNhOWE3NC4uZWQ5NjUx
N2YzZTQwY2ZiYWQyMWRmZmVlOTExYjkzNTkzMjAyNzVmNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAt
Nyw2ICs3LDcgQEAgZmxhZ3M6CiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0NsYXNz
RmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMKICAg
SW50bC5EaXNwbGF5TmFtZXM6IHVzZUludGxEaXNwbGF5TmFtZXMKKyAgSW50bC5TZWdtZW50ZXI6
IHVzZUludGxTZWdtZW50ZXIKIHNraXA6CiAgIGZlYXR1cmVzOgogICAgIC0gU2hhcmVkQXJyYXlC
dWZmZXIKQEAgLTMwLDcgKzMxLDYgQEAgc2tpcDoKICAgICAtIEludGwuRGF0ZVRpbWVGb3JtYXQt
ZnJhY3Rpb25hbFNlY29uZERpZ2l0cwogICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAgICAgLSBJbnRs
Lk51bWJlckZvcm1hdC11bmlmaWVkCi0gICAgLSBJbnRsLlNlZ21lbnRlcgogICBwYXRoczoKICAg
ICAtIHRlc3QvYnVpbHQtaW5zL0RhdGFWaWV3L3Byb3RvdHlwZS9nZXRCaWdJbnQ2NAogICAgIC0g
dGVzdC9idWlsdC1pbnMvRGF0YVZpZXcvcHJvdG90eXBlL2dldEJpZ1VpbnQ2NApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2V4
cGVjdGF0aW9ucy55YW1sCmluZGV4IGY4OWFhYWU3NjA0MjBjZGYyNzVlM2FlZmY1M2U4ZTg4NGE0
NTIyYzkuLjBhN2VmYTI5OWRjMWE3NGJiZmE3N2VhOWI5MGMxOTc3MWY5ZTIzMDcgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3Qy
NjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTE2NzEsNiArMTY3MSwyMSBAQCB0ZXN0L2ludGw0MDIv
TG9jYWxlL3Byb3RvdHlwZS9taW5pbWl6ZS9yZW1vdmluZy1saWtlbHktc3VidGFncy1maXJzdC1h
ZGRzLWxpa2VseQogdGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9jb25zdHJ1Y3Rvci9j
b25zdHJ1Y3Rvci9sb2NhbGVzLXZhbGlkLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBH
cmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4
Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwordGVzdC9pbnRsNDAyL1NlZ21lbnRlci9jb25z
dHJ1Y3Rvci9jb25zdHJ1Y3Rvci9sb2NhbGVzLXZhbGlkLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2
MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24g
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93
biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwordGVzdC9pbnRsNDAyL1NlZ21l
bnRlci9wcm90b3R5cGUvc2VnbWVudC9zZWdtZW50LWdyYXBoZW1lLmpzOgorICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKrdW5kZWZpbmVkwrspIHRv
IGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFs
dWUowqswwrssIMKrdW5kZWZpbmVkwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvU2VnbWVu
dGVyL3Byb3RvdHlwZS9zZWdtZW50L3NlZ21lbnQtc2VudGVuY2UuanM6CisgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywgwqt1bmRlZmluZWTCuykgdG8g
YmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqzDCuywgwqt1bmRlZmluZWTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9TZWdtZW50
ZXIvcHJvdG90eXBlL3NlZ21lbnQvc2VnbWVudC10b3N0cmluZy5qczoKKyAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgc2VnbWVudCAidW5kZWZpbmVkIiwgZm91bmQgInVuZGVmaW5l
ZCIgZm9yIGFyZ3VtZW50cyAgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrdW5k
ZWZpbmVkwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBzZWdtZW50ICJ1bmRlZmluZWQiLCBmb3VuZCAidW5kZWZpbmVkIiBmb3IgYXJndW1lbnRz
ICBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqt1bmRlZmluZWTCuykgdG8gYmUg
dHJ1ZScKK3Rlc3QvaW50bDQwMi9TZWdtZW50ZXIvcHJvdG90eXBlL3NlZ21lbnQvc2VnbWVudC13
b3JkLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsw
wrssIMKrdW5kZWZpbmVkwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKrdW5kZWZpbmVkwrspIHRvIGJlIHRydWUn
CiB0ZXN0L2ludGw0MDIvbGFuZ3VhZ2UtdGFncy1pbnZhbGlkLmpzOgogICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiBJbnZhbGlkIGxhbmd1YWdlIHRhZyBuby1ueW4gd2FzIG5vdCByZWplY3RlZC4g
RXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsIChUZXN0aW5nIHdpdGggQ29sbGF0b3IuKScKICAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEludmFsaWQgbGFuZ3VhZ2UgdGFnIG5vLW55biB3YXMgbm90IHJlamVjdGVk
LiBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2Fz
IHRocm93biBhdCBhbGwgKFRlc3Rpbmcgd2l0aCBDb2xsYXRvci4pJwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405769</attachid>
            <date>2020-07-31 23:21:53 -0700</date>
            <delta_ts>2020-07-31 23:21:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213638-20200731232152.patch</filename>
            <type>text/plain</type>
            <size>112370</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZDUyNWFkZjEyNTQxNGViNGQyN2RlNDU4YmQ0YTJkOGY0MjY5ODQ3Li42YmZjYzlkMmU2ZTVlM2Q4
MDM5MzQxNjNmMDA3ZjBmZDk4ODhhM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMC0wNy0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBJbnRsLlNlZ21lbnRlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNjM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgUm9zcyBLaXJzbGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgSW50bC5T
ZWdtZW50ZXJbMV0uIEludGwuU2VnbWVudGVyIG9mZmVycyBhY2Nlc3MgdG8gSUNVIGJyZWFrIGl0
ZXJhdG9yIGZlYXR1cmUsIHdoaWNoIGNhbiBicmVhayBzdHJpbmdzIGludG8gZ3JhcGhlbWUgY2x1
c3RlciAvIHdvcmRzIC8gc2VudGVuY2VzLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIu
Y29tL3RjMzkvcHJvcG9zYWwtaW50bC1zZWdtZW50ZXIKKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpjcmVhdGVTZWdtZW50ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bFNlZ21lbnRlckF2YWls
YWJsZUxvY2FsZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJ
bnRsU2VnbWVudEl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJh
dG9yOjpJbnRsU2VnbWVudEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVy
YXRvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9y
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvcjo6bmV4
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yLmg6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpJbnRsU2VnbWVu
dEl0ZXJhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRJdGVyYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlRnVuY05leHQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50ZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
SW50bFNlZ21lbnRlcjo6SW50bFNlZ21lbnRlcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50
ZXI6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6aW5pdGlh
bGl6ZVNlZ21lbnRlcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OnNlZ21lbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyOjpyZXNvbHZlZE9wdGlvbnMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyOjpncmFudWxhcml0eVN0cmluZyk6CisgICAg
ICAgIChKU0M6OkludGxTZWdtZW50ZXI6OmNyZWF0ZVNlZ21lbnREYXRhT2JqZWN0KToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxTZWdtZW50ZXIuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9J
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bFNl
Z21lbnRlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVy
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50
ZXJDb25zdHJ1Y3Rvcjo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEludGxTZWdtZW50ZXIpOgorICAgICAgICAoSlNDOjpjYWxsSW50bFNlZ21lbnRl
cik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXJDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2Fs
ZXNPZik6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaDogQWRk
ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGU6OkludGxTZWdtZW50ZXJQcm90b3R5cGUpOgor
ICAgICAgICAoSlNDOjpJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudCk6CisgICAgICAg
IChKU0M6OkludGxTZWdtZW50ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICog
cnVudGltZS9JbnRsU2VnbWVudHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bFNlZ21l
bnRzOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVudHM6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6SW50bFNlZ21lbnRzKToKKyAgICAgICAg
KEpTQzo6SW50bFNlZ21lbnRzOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxT
ZWdtZW50czo6Y29udGFpbmluZyk6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6Y3JlYXRl
U2VnbWVudEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRzOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KiBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsU2VnbWVudHNQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxTZWdt
ZW50c1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bFNlZ21l
bnRzUHJvdG90eXBlOjpJbnRsU2VnbWVudHNQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRs
U2VnbWVudHNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bFNl
Z21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcpOgorICAgICAgICAoSlNDOjpJbnRsU2VnbWVu
dHNQcm90b3R5cGVGdW5jSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRz
UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZWdtZW50SXRlcmF0b3JT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2VnbWVudGVyU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNlZ21lbnRzU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIwLTA3LTMxICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vdmUgT3B0aW9ucyBzZXR0ZXIgdG8gd2hlcmUgd2UgYWxsb3cgYWNjZXNzIHRvIHRoZSBP
cHRpb25zIG9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA1YjU0ZDZkMTEzNGZlOGE5MTM1NDc5NDA1NmNhYTM3ODkwMmZj
ZGNiLi41YzUxMmQ2NzI5YmQ0NWUxMzI0ZDU0ODhmZDliYjBkZDNiNWM5YjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIwLTA3LTMxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0pTQ10gQWRkIEludGwuU2VnbWVudGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM2MzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjpjaGFyYWN0ZXJzV2l0aG91dE51bGxUZXJtaW5hdGlvbiBjb25z
dCk6CisgICAgICAgIChXVEY6OlN0cmluZzo6Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24g
Y29uc3QpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDIwLTA3LTMwICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgVGlt
aW5nU2NvcGUgdHJhY2sgdGhlIG1heCBldmVudCBkdXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGE4NjI4OGIyZTc3NzBlODgxN2EwZThkYjJiNDhkNzI2Mzc3OGRj
MTUuLjdkMDIxNjBmZTRkNmNjYWU5MDI3MGNjYjg1NmIwNzA5ZjIyM2M0MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgwLDYgKzgwLDEwIEBAIHNldChKYXZhU2NyaXB0
Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHAKICAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAKICAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAg
cnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50
bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bFNlZ21lbnRlclByb3Rv
dHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKICAgICBydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
CmluZGV4IDVhMGM4ODNkNTM0OGU2NTY3YWVmZjk2YWViYzA4MWZiYTA3NmNlMzcuLjNjYzA5NWEy
YWNiYmZkNjU1OTM1M2VkNDQxYTlmYjI5MTMzMDE1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNDcsNiAr
MTQ3LDEwIEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0
b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5j
cHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJv
dG90eXBlLmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0
b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3Bw
CiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKICQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0pTSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMmJkZjViMmM4MjJh
NmQ5ZTdiNmY0NTZiYjBhOTYxNjNlZTFkNmQxMC4uY2ViOTI4ZmQ5Nzc1NmQwMGJkOTdjY2RkZTNm
NTYxMTlhMDQxNmI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzcsNiArMzcsMTAgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxQbHVyYWxSdWxl
c0NvbnN0cnVjdG9yLmwKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsUmVsYXRpdmVUaW1lRm9y
bWF0Q29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFNl
Z21lbnRJdGVyYXRvclByb3RvdHlwZS5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5sdXQuaAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxT
ZWdtZW50ZXJQcm90b3R5cGUubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsU2VnbWVudHNQcm90b3R5cGUubHV0LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNE
YXRhVmlld1Byb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQ1ZDZmMmJiZDAxMzMwN2M4NGE4MTAzN2Mw
MWI1MjFjYmQyYWE0ZjAuLjlhOWVhZTkzZjY5YzdmYWFhZGYyYjI1YzdkMjZhYTk5YTZkNTg4YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNjgsNiAr
MTY4LDEwIEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUubHV0LmggXAogICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQu
aCBcCiAgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50
bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bFNlZ21lbnRlckNvbnN0
cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsU2VnbWVudGVyUHJvdG90eXBlLmx1dC5oIFwKKyAgICBJ
bnRsU2VnbWVudHNQcm90b3R5cGUubHV0LmggXAogICAgIEpTRGF0YVZpZXdQcm90b3R5cGUubHV0
LmggXAogICAgIEpTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKICAgICBKU0ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODE5N2Y2
YjYwYzhlM2ZhNWJiMGU3ODdiNDZhZmU0Y2VmZjRiZmU0MS4uYTIwZTY0ZGVkY2FlMTBmZTA3Y2Jj
MmM4MGQ3ZWEyM2YyNTE0MTVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3
ODQsNiArMTc4NCwxOCBAQAogCQlERTI2RTkwMzFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4
ZWN1dGFibGVDcmVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVh
dG9yLmggKi87IH07CiAJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUx
MjRBOEY3MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYx
IC8qIE9wYXF1ZUpTU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTMwNzE3ODMyNEM3ODI3MTAwREYwNjQ0IC8qIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzQkY4ODUwMjQ0ODBCRTEwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmggKi87
IH07CisJCUUzMDcxNzg0MjRDNzgyNzcwMERGMDY0NCAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuaCAqLzsgfTsKKwkJRTMwNzE3ODUyNEM3ODI3OTAwREYwNjQ0IC8qIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzQkY4ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlLmggKi87IH07CisJCUUzMDcxNzg2MjRDNzgyN0MwMERGMDY0NCAv
KiBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzMDcxNzdEMjRDNzgyNDYwMERGMDY0NCAvKiBJbnRsU2VnbWVu
dGVyQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJRTMwNzE3ODcyNEM3ODI3RTAwREYwNjQ0IC8qIElu
dGxTZWdtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzMDcxNzgxMjRDNzgyNDcwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyLmggKi87IH07CisJ
CUUzMDcxNzg4MjRDNzgyODEwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzA3MTc3RjI0Qzc4
MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlclByb3RvdHlwZS5oICovOyB9OworCQlFMzA3MTc4
OTI0Qzc4Mjg2MDBERjA2NDQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RDVGQjE4RDIwNzQ0QUU4MDA1
RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggKi87IH07CisJCUUzMDcxNzhBMjRD
NzgyOEMwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Q1RkIxOTAyMDc0NEJGMTAwNURE
RjY0IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi87IH07CisJCUUzMDcxNzhCMjRD
NzgyOEYwMERGMDY0NCAvKiBJbnRsUGx1cmFsUnVsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdENUZCMTkyMjA3NDRCRjIwMDVEREY2NCAvKiBJbnRs
UGx1cmFsUnVsZXMuaCAqLzsgfTsKKwkJRTMwNzE3OEMyNEM3ODI5ODAwREYwNjQ0IC8qIEludGxM
b2NhbGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEEzQUZGOTMwMjQ1QTNDRkMwMEM5QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmgg
Ki87IH07CisJCUUzMDcxNzhEMjRDNzgyOUEwMERGMDY0NCAvKiBJbnRsTG9jYWxlQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZG
OTJDMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJ
RTMwNzE3OEUyNEM3ODI5RDAwREYwNjQ0IC8qIEludGxMb2NhbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAv
KiBJbnRsTG9jYWxlLmggKi87IH07CiAJCUUzMTE3OUFBMjI4ODM4NjEwMDUxNEIyQyAvKiBTeW1i
b2xUYWJsZU9yU2NvcGVEZXB0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMxMTc5QTkyMjg4Mzg1RDAwNTE0QjJDIC8qIFN5bWJvbFRhYmxlT3JTY29w
ZURlcHRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTMxNjE4MTMxRUM1RkUxNzAwMDZBMjE4IC8qIERPTUFubm90YXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTYxODEwMUVDNUZFMDgwMDA2
QTIxOCAvKiBET01Bbm5vdGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTMxNjE4MTUxRUM1RkUyNzAwMDZBMjE4IC8qIERPTUF0dHJpYnV0
ZUdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMxNjE4MTIxRUM1RkUwODAwMDZBMjE4IC8qIERPTUF0dHJpYnV0ZUdldHRlclNldHRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
ODczLDYgKzE4ODUsMTAgQEAKIAkJRTNEMzUxNUYyNDFCODlENzAwOERDMTZFIC8qIE1hcmtlZEpT
VmFsdWVSZWZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNEMzUxNUQyNDFCODlDRTAwOERDMTZFIC8qIE1hcmtlZEpTVmFsdWVSZWZBcnJheS5o
ICovOyB9OwogCQlFM0Q4Nzc3NDFFNjVDMEEwMDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDg3NzcyMUU2
NUMwODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oICovOyB9OwogCQlFM0VFMTM3NjIxRkJE
NDM1MDBEODNDNEIgLyogRXJyb3JUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0VFMTM3NDIxRkJENDM0MDBEODNDNEIgLyogRXJyb3JUeXBlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNGMjE5
MzcyNEM3ODgyRjAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjIxOTMxMjRDNzg4MjkwMDNBRTQ1
MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yLmggKi87IH07CisJCUUzRjIxOTM4MjRDNzg4MzEwMDNB
RTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyMTkyRjI0Qzc4ODI5MDAzQUU0NTMgLyog
SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oICovOyB9OworCQlFM0YyMTkzOTI0Qzc4ODM0
MDAzQUU0NTMgLyogSW50bFNlZ21lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0YyMTkzMzI0Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNlZ21lbnRz
LmggKi87IH07CisJCUUzRjIxOTNBMjRDNzg4MzYwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RjIxOTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuaCAqLzsgfTsK
IAkJRTNGMjNBN0YxRUNGMTNFRTAwOTc4RDk5IC8qIFNuaXBwZXRTbG93UGF0aENhbGxzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0YyM0E3RTFFQ0Yx
M0U1MDA5NzhEOTkgLyogU25pcHBldFNsb3dQYXRoQ2FsbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MDFFQ0YxM0Y1MDA5NzhEOTkg
LyogU25pcHBldFJlZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNGMjNBN0QxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRSZWcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0YyM0E4MTFFQ0YxM0ZB
MDA5NzhEOTkgLyogU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNGMjNBN0MxRUNGMTNFNTAwOTc4RDk5IC8qIFNuaXBwZXRQYXJh
bXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NDk1MCw2ICs0OTY2LDEyIEBACiAJCUUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50
aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJRTMwNjAxMjgyMjhGOTc4MTAwRkFBQkRGIC8q
IFVubGlua2VkTWV0YWRhdGFUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmxpbmtlZE1l
dGFkYXRhVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzA2Nzc5NzFC
OEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBwYXRoID0gTW9kdWxlTG9hZGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzA3MTc3RDI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzA3MTc3RTI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNl
Z21lbnRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVudGVyUHJv
dG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwNzE3N0YyNEM3ODI0
NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXJQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bFNlZ21lbnRlclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzA3
MTc4MDI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnRsU2VnbWVudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMw
NzE3ODEyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50bFNlZ21lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzA3MTc4MjI0
Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMTE3OUE5MjI4ODM4NUQwMDUxNEIyQyAvKiBTeW1ib2xUYWJsZU9yU2Nv
cGVEZXB0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzE2MTgxMDFFQzVGRTA4MDAwNkEyMTggLyogRE9N
QW5ub3RhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Bbm5vdGF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTYxODExMUVDNUZFMDgwMDA2
QTIxOCAvKiBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRE9NQXR0cmlidXRlR2V0dGVyU2V0dGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwOTgsNiArNTEyMCwxNCBAQAogCQlFM0Q4Nzc3MjFFNjVD
MDg5MDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQnl0ZWNvZGVEdW1wZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNFRTEzNzQyMUZCRDQzNDAwRDgzQzRCIC8qIEVycm9yVHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFcnJvclR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNFRTEzNzUyMUZCRDQzNDAwRDgzQzRCIC8qIEVycm9yVHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvclR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0YyMTkyRjI0Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVy
YXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRjIxOTMwMjRDNzg4MjkwMDNB
RTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxT
ZWdtZW50SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0YyMTkz
MTI0Qzc4ODI5MDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsU2VnbWVudEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
RjIxOTMyMjRDNzg4MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNGMjE5MzMyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsU2VnbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTNGMjE5MzQyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRsU2VnbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFM0YyMTkzNTI0Qzc4ODJBMDAzQUU0NTMgLyogSW50bFNlZ21lbnRJdGVyYXRvclByb3Rv
dHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNGMjE5MzYyNEM3ODgyQjAwM0FF
NDUzIC8qIEludGxTZWdtZW50c1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsU2VnbWVu
dHNQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGMjNBN0IxRUNG
MTNFNTAwOTc4RDk5IC8qIFNuaXBwZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU25pcHBldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0YyM0E3QzFFQ0Yx
M0U1MDA5NzhEOTkgLyogU25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTbmlwcGV0UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RjIzQTdEMUVDRjEzRTUwMDk3OEQ5OSAvKiBTbmlwcGV0UmVnLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNuaXBwZXRSZWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTczMjEsNiArNzM1MSwyMCBAQAogCQkJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKIAkJCQlBM0JGODg0QjI0NDgw
QkRFMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGUuaCAqLywKKwkJCQlFMzA3MTc4MDI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRl
ci5jcHAgKi8sCisJCQkJRTMwNzE3ODEyNEM3ODI0NzAwREYwNjQ0IC8qIEludGxTZWdtZW50ZXIu
aCAqLywKKwkJCQlFMzA3MTc4MjI0Qzc4MjQ3MDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNvbnN0
cnVjdG9yLmNwcCAqLywKKwkJCQlFMzA3MTc3RDI0Qzc4MjQ2MDBERjA2NDQgLyogSW50bFNlZ21l
bnRlckNvbnN0cnVjdG9yLmggKi8sCisJCQkJRTMwNzE3N0UyNEM3ODI0NjAwREYwNjQ0IC8qIElu
dGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwICovLAorCQkJCUUzMDcxNzdGMjRDNzgyNDcwMERGMDY0
NCAvKiBJbnRsU2VnbWVudGVyUHJvdG90eXBlLmggKi8sCisJCQkJRTNGMjE5MzAyNEM3ODgyOTAw
M0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuY3BwICovLAorCQkJCUUzRjIxOTMxMjRDNzg4
MjkwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yLmggKi8sCisJCQkJRTNGMjE5MzUyNEM3
ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJ
CUUzRjIxOTJGMjRDNzg4MjkwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
LmggKi8sCisJCQkJRTNGMjE5MzQyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5jcHAg
Ki8sCisJCQkJRTNGMjE5MzMyNEM3ODgyQTAwM0FFNDUzIC8qIEludGxTZWdtZW50cy5oICovLAor
CQkJCUUzRjIxOTMyMjRDNzg4MkEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5cGUuY3Bw
ICovLAorCQkJCUUzRjIxOTM2MjRDNzg4MkIwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudHNQcm90b3R5
cGUuaCAqLywKIAkJCQkwRjI3NUYyQzFFQ0UwNzk2MDA2MjBENDcgLyogSW50cmluc2ljLmNwcCAq
LywKIAkJCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8sCiAJCQkJ
OEI5RjZENTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCAqLywKQEAgLTk3OTMs
NiArOTgzNyw5IEBACiAJCQkJRTM2NUYzM0EyNEFBNjIzOTAwQzk5MUIyIC8qIEludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTNDMTIxMjRBQTRD
QjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzY1RjMzQjI0QUE2MjNCMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMDcxNzhFMjRDNzgyOUQwMERGMDY0NCAvKiBJ
bnRsTG9jYWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4RDI0Qzc4MjlBMDBERjA2NDQg
LyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4QzI0
Qzc4Mjk4MDBERjA2NDQgLyogSW50bExvY2FsZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKQEAg
LTk4MDAsNiArOTg0NywxOSBAQAogCQkJCUExMjU4NDZGMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyQkJGRjIx
QjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOEVC
RTI0MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTMwNzE3OEIyNEM3ODI4RjAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTMwNzE3OEEyNEM3ODI4QzAwREYwNjQ0IC8qIEludGxQbHVyYWxSdWxl
c0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4OTI0Qzc4Mjg2MDBERjA2
NDQgLyogSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3
MTc4MzI0Qzc4MjcxMDBERjA2NDQgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTMwNzE3ODQyNEM3ODI3NzAwREYwNjQ0IC8qIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMwNzE3ODUyNEM3ODI3OTAw
REYwNjQ0IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzMDcxNzg3MjRDNzgyN0UwMERGMDY0NCAvKiBJbnRsU2VnbWVudGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzA3MTc4NjI0Qzc4MjdDMDBERjA2NDQgLyogSW50bFNlZ21lbnRlckNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzA3MTc4ODI0Qzc4MjgxMDBERjA2NDQg
LyogSW50bFNlZ21lbnRlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNGMjE5Mzcy
NEM3ODgyRjAwM0FFNDUzIC8qIEludGxTZWdtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzRjIxOTM4MjRDNzg4MzEwMDNBRTQ1MyAvKiBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0YyMTkzOTI0Qzc4ODM0MDAzQUU0NTMgLyogSW50
bFNlZ21lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0YyMTkzQTI0Qzc4ODM2MDAzQUU0NTMg
LyogSW50bFNlZ21lbnRzUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjBCRDgwMTE0
OEVBNkYyMDAxMTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzRFMDM1
NDFFNTNCRDI5MDAyMTNGNjQgLyogSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEQ0UxMzIxRkIxMURBNDAwNkYzOTAxIC8qIElzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4
IGMzMTBiOWE0Y2RmZDYxZDQ3ODJlZjY2OWQzYTliMmQ1Y2UzMTAyZjYuLjVlNWEzMzY0YmIwNDJk
OTZhNzUyMTMzMTQ0OTNhNzNkZDhhNGQ0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
QEAgLTgzMiw2ICs4MzIsMTMgQEAgcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3Bw
CiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCiBydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvci5jcHAKK3J1bnRpbWUv
SW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bFNlZ21lbnRlci5j
cHAKK3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9JbnRsU2Vn
bWVudGVyUHJvdG90eXBlLmNwcAorcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCitydW50aW1lL0lu
dGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAog
cnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSlNBcnJheS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4
IGNhMTlkMDJiZTE3Y2EwNjQwNmEzOGU2MTY3NDExZTMwNWE0ZTUwNGYuLjIwN2IzMGY3NzI2NDNm
N2U4N2RlZDUwNGFkMDg2Zjc5NDliY2FmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtNTQsNiArNTQsNyBAQAogICAgIG1h
Y3JvKFJlZ0V4cCkgXAogICAgIG1hY3JvKFJlbGF0aXZlVGltZUZvcm1hdCkgXAogICAgIG1hY3Jv
KFJlbW90ZVBsYXliYWNrKSBcCisgICAgbWFjcm8oU2VnbWVudGVyKSBcCiAgICAgbWFjcm8oU2V0
KSBcCiAgICAgbWFjcm8oU2hhcmVkQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhTdHJpbmcpIFwK
QEAgLTExOSw2ICsxMjAsNyBAQAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKGdsb2JhbCkg
XAogICAgIG1hY3JvKGdvKSBcCisgICAgbWFjcm8oZ3JhbnVsYXJpdHkpIFwKICAgICBtYWNybyhn
cm91cHMpIFwKICAgICBtYWNybyhoYXMpIFwKICAgICBtYWNybyhoYXNPd25Qcm9wZXJ0eSkgXApA
QCAtMTM5LDYgKzE0MSw3IEBACiAgICAgbWFjcm8oaXNQcm90b3R5cGVPZikgXAogICAgIG1hY3Jv
KGlzVmlldykgXAogICAgIG1hY3JvKGlzV2F0Y2hwb2ludCkgXAorICAgIG1hY3JvKGlzV29yZExp
a2UpIFwKICAgICBtYWNybyhqZXR0aXNvblJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKICAg
ICBtYWNybyhsYW5ndWFnZSkgXApAQCAtMTc2LDYgKzE3OSw3IEBACiAgICAgbWFjcm8ocmVzb2x2
ZSkgXAogICAgIG1hY3JvKHNjcmlwdCkgXAogICAgIG1hY3JvKHNlY29uZCkgXAorICAgIG1hY3Jv
KHNlZ21lbnQpIFwKICAgICBtYWNybyhzZW5zaXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkgXAog
ICAgIG1hY3JvKHNpemUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5jcHAKaW5kZXggYzVhNjA4OTk4YjY2MDY5NGYyY2E4YzBhMjM3YzZkZjUzMGIwYmY1OC4u
NjAxMzQzMTc2MjI4ZGQzNTBlZGRiMTI2ZGJmMWYzOWIwYmFhOGJhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTQ4LDggKzQ4LDEyIEBACiAj
aW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0
aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJ
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVyUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNp
bmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KICNpbmNs
dWRlIDx1bmljb2RlL3VmaWVsZHBvc2l0ZXIuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4K
QEAgLTExNiw2ICsxMjAsMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlUmVsYXRpdmVUaW1lRm9y
bWF0Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPnJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVh
dGVTZWdtZW50ZXJDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAg
SW50bE9iamVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4ob2JqZWN0KTsKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW50bE9iamVjdC0+Z2xvYmFsT2JqZWN0
KHZtKTsKKyAgICByZXR1cm4gSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIElu
dGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsU2VnbWVudGVy
UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5zZWdtZW50ZXJTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJv
dG90eXBlT2JqZWN0KCkpKTsKK30KKwogfQogCiAjaW5jbHVkZSAiSW50bE9iamVjdC5sdXQuaCIK
QEAgLTE2OSw2ICsxODAsOCBAQCB2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqKQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY3JlYXRlRGlzcGxh
eU5hbWVzQ29uc3RydWN0b3IpOwogI2VuZGlmCisgICAgaWYgKE9wdGlvbnM6OnVzZUludGxTZWdt
ZW50ZXIoKSkKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPlNlZ21lbnRlciwgY3JlYXRlU2VnbWVudGVyQ29uc3RydWN0b3Iodm0sIHRoaXMp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9
CiAKIFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC0yODEsNiArMjk0
LDI3IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxl
cygpCiAgICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXM7CiB9CiAKK2NvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgaW50bFNlZ21lbnRlckF2YWlsYWJsZUxvY2FsZXMoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7CisgICAg
SGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxl
cy5nZXQoKTsKKworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKKyAg
ICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKKyAgICAgICAgQVNTRVJUKGF2
YWlsYWJsZUxvY2FsZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgY29uc3RleHByIGJvb2wgaXNJbW1v
cnRhbCA9IHRydWU7CisgICAgICAgIGludDMyX3QgY291bnQgPSB1YnJrX2NvdW50QXZhaWxhYmxl
KCk7CisgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAg
ICAgICAgIFN0cmluZyBsb2NhbGUgPSBsYW5ndWFnZVRhZ0ZvckxvY2FsZUlEKHVicmtfZ2V0QXZh
aWxhYmxlKGkpLCBpc0ltbW9ydGFsKTsKKyAgICAgICAgICAgIGlmIChsb2NhbGUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxl
cy5hZGQobG9jYWxlKTsKKyAgICAgICAgICAgIGFkZFNjcmlwdGxlc3NMb2NhbGVJZk5lZWRlZChh
dmFpbGFibGVMb2NhbGVzLCBsb2NhbGUpOworICAgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJu
IGF2YWlsYWJsZUxvY2FsZXM7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
Z2V0b3B0aW9uCiBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCAwYjBhN2JiNmJh
NDFjMWVmMjkxYTI4MjIzYjg1MDM4MTg3Zjc2OGQ2Li41ZWQ0ZDE1ZTYwNDZmMDFjZWIyYjU3Mjlh
YmYwMmY4NjA1MWU3MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIEludGxPYmplY3QgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiBTdHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCop
OwogY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOwogY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCk7Citjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGludGxTZWdtZW50ZXJBdmFpbGFibGVMb2NhbGVzKCk7CiBpbmxpbmUg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVz
KCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogaW5saW5lIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgaW50bERpc3BsYXlOYW1lc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBp
bnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CiBpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBp
bnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVM
b2NhbGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50SXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFNlZ21lbnRJdGVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU1YzZmMGQ3OWJjMmViZGI0OTFiNzFj
OTNkMWJiODhmZTM3Y2RkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3IuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRv
ci5oIgorCisjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8dW5pY29k
ZS91Y3Vyci5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gSW50bFNlZ21lbnRJdGVyYXRvcjo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsU2VnbWVudEl0ZXJh
dG9yKSB9OworCitJbnRsU2VnbWVudEl0ZXJhdG9yKiBJbnRsU2VnbWVudEl0ZXJhdG9yOjpjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0
ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+JiYgc2VnbWVudGVyLCBCb3g8VmVjdG9yPFVD
aGFyPj4gYnVmZmVyLCBKU1N0cmluZyogc3RyaW5nLCBJbnRsU2VnbWVudGVyOjpHcmFudWxhcml0
eSBncmFudWxhcml0eSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsU2VnbWVudEl0ZXJhdG9yPih2bS5oZWFwKSkgSW50bFNlZ21lbnRJdGVyYXRv
cih2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHNlZ21lbnRlciksIFdURk1vdmUoYnVmZmVyKSwgZ3Jh
bnVsYXJpdHkpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cmluZyk7CisgICAg
cmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsU2VnbWVudEl0ZXJhdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK0ludGxTZWdtZW50SXRlcmF0b3I6OkludGxTZWdtZW50SXRlcmF0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9y
LCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+JiYgc2VnbWVudGVyLCBCb3g8VmVjdG9yPFVDaGFyPj4m
JiBidWZmZXIsIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9zZWdtZW50ZXIoV1RGTW92ZShzZWdtZW50ZXIp
KQorICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQorICAgICwgbV9ncmFudWxhcml0eShn
cmFudWxhcml0eSkKK3sKK30KKwordm9pZCBJbnRsU2VnbWVudEl0ZXJhdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTU3RyaW5nKiBzdHJpbmcpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgbV9zdHJpbmcu
c2V0KHZtLCB0aGlzLCBzdHJpbmcpOworfQorCit2b2lkIEludGxTZWdtZW50SXRlcmF0b3I6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxTZWdtZW50SXRlcmF0b3IqPihjZWxsKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fc3RyaW5nKTsKK30KKworSlNPYmplY3QqIEludGxTZWdtZW50
SXRlcmF0b3I6Om5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgaW50MzJfdCBzdGFydEluZGV4ID0gdWJya19jdXJyZW50KG1fc2Vn
bWVudGVyLmdldCgpKTsKKyAgICBpbnQzMl90IGVuZEluZGV4ID0gdWJya19uZXh0KG1fc2VnbWVu
dGVyLmdldCgpKTsKKyAgICBpZiAoZW5kSW5kZXggPT0gVUJSS19ET05FKQorICAgICAgICByZXR1
cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoZ2xvYmFsT2JqZWN0LCBqc1VuZGVmaW5lZCgp
LCB0cnVlKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gSW50bFNlZ21lbnRlcjo6Y3JlYXRlU2Vn
bWVudERhdGFPYmplY3QoZ2xvYmFsT2JqZWN0LCBtX3N0cmluZy5nZXQoKSwgc3RhcnRJbmRleCwg
ZW5kSW5kZXgsICptX3NlZ21lbnRlciwgbV9ncmFudWxhcml0eSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKyAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIGZhbHNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJh
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGRiOTYwM2IyNjg4MmQyN2RhYmU2MjAzYWMwNzc3MzVjMzU3NDM2
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50SXRlcmF0b3IuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBJbnRsU2VnbWVudEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxJ
bnRsU2VnbWVudEl0ZXJhdG9yKj4oY2VsbCktPkludGxTZWdtZW50SXRlcmF0b3I6On5JbnRsU2Vn
bWVudEl0ZXJhdG9yKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bFNlZ21lbnRJdGVyYXRvclNw
YWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIEludGxTZWdtZW50SXRlcmF0b3IqIGNy
ZWF0ZShWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJy
ZWFrSXRlcmF0b3JEZWxldGVyPiYmLCBCb3g8VmVjdG9yPFVDaGFyPj4sIEpTU3RyaW5nKiwgSW50
bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKKyAgICBKU09iamVjdCogbmV4dChKU0dsb2JhbE9iamVjdCopOworCisgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcml2YXRlOgor
ICAgIEludGxTZWdtZW50SXRlcmF0b3IoVk0mLCBTdHJ1Y3R1cmUqLCBzdGQ6OnVuaXF1ZV9wdHI8
VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4mJiwgQm94PFZlY3RvcjxVQ2hh
cj4+JiYsIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNTdHJpbmcqKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRv
ciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPiBtX3NlZ21lbnRlcjsKKyAgICBCb3g8VmVjdG9yPFVD
aGFyPj4gbV9idWZmZXI7CisgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX3N0cmluZzsKKyAg
ICBJbnRsU2VnbWVudGVyOjpHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5OworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MDA5
YzkyZjUzNTk5Y2M3ZDgxZDBhY2Q3ZDUzMDZhN2ZkNjFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBl
LmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIklu
dGxTZWdtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsU2VnbWVu
dEl0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
KworfQorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5sdXQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudEl0ZXJhdG9yUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJTZWdtZW50IFN0cmluZyBJdGVyYXRvciIsICZCYXNlOjpzX2lu
Zm8sICZzZWdtZW50SXRlcmF0b3JQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9y
IEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBzZWdtZW50SXRlcmF0
b3JQcm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgICAgICAgIEludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGVGdW5jTmV4dCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQK
KyovCisKK0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUqIEludGxTZWdtZW50SXRlcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1
dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50SXRlcmF0
b3JQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBv
YmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworfQorCitJbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlOjpJbnRsU2VnbWVudEl0
ZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtaW50bC1zZWdtZW50ZXIvI3NlYy0lc2VnbWVudGl0ZXJhdG9ycHJvdG90eXBlJS5uZXh0CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGVG
dW5jTmV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogc2VnbWVudEl0ZXJhdG9yID0g
anNEeW5hbWljQ2FzdDxJbnRsU2VnbWVudEl0ZXJhdG9yKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghc2VnbWVudEl0ZXJhdG9yKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5TZWdtZW50SXRlcmF0b3IucHJv
dG90eXBlLm5leHQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxp
emVkIGFzIGEgU2VnbWVudEl0ZXJhdG9yIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRJdGVyYXRvci0+bmV4dChnbG9iYWxPYmplY3Qp
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI1M2NiMjI1ZTJhOGUwMGYxZTUxNzIwMmE1M2M4MTEyYWNlOWYwYzEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIElu
dGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1
cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIEludGxTZWdtZW50
SXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSW50bFNlZ21lbnRJdGVyYXRv
clByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsU2VnbWVudGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWNhMTlmZGVlN2NiODhlZGIy
ODc2YjcyMmY2MzdlYWUzYmRiOWU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAKQEAgLTAsMCArMSwxODUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgor
CisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudHMu
aCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3Iu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyOjpz
X2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEludGxTZWdtZW50ZXIpIH07CisKK0ludGxTZWdtZW50ZXIqIEludGxT
ZWdtZW50ZXI6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1
dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50ZXI+KHZt
LmhlYXApKSBJbnRsU2VnbWVudGVyKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bFNl
Z21lbnRlcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsU2VnbWVudGVyOjpJbnRsU2VnbWVudGVyKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7
Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8o
KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1zZWdtZW50ZXIvI3Nl
Yy1pbnRsLnNlZ21lbnRlcgordm9pZCBJbnRsU2VnbWVudGVyOjppbml0aWFsaXplU2VnbWVudGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBv
cHRpb25zVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gcmVxdWVzdGVk
TG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNPYmplY3Qq
IG9wdGlvbnM7CisgICAgaWYgKG9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBv
cHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3Rv
dHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3B0aW9ucyA9IG9w
dGlvbnNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIFJlc29sdmVMb2NhbGVPcHRpb25z
IGxvY2FsZU9wdGlvbnM7CisKKyAgICBMb2NhbGVNYXRjaGVyIGxvY2FsZU1hdGNoZXIgPSBpbnRs
T3B0aW9uPExvY2FsZU1hdGNoZXI+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlO
YW1lcy0+bG9jYWxlTWF0Y2hlciwgeyB7ICJsb29rdXAiX3MsIExvY2FsZU1hdGNoZXI6Okxvb2t1
cCB9LCB7ICJiZXN0IGZpdCJfcywgTG9jYWxlTWF0Y2hlcjo6QmVzdEZpdCB9IH0sICJsb2NhbGVN
YXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0IGZpdFwiIl9zLCBMb2Nh
bGVNYXRjaGVyOjpCZXN0Rml0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworCisgICAgYXV0byBsb2NhbGVEYXRhID0gW10oY29uc3QgU3RyaW5nJiwgUmVsZXZhbnRF
eHRlbnNpb25LZXkpIC0+IFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9OworCisgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxTZWdtZW50ZXJBdmFpbGFi
bGVMb2NhbGVzKCk7CisgICAgYXV0byByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2Jq
ZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBsb2NhbGVNYXRjaGVyLCBs
b2NhbGVPcHRpb25zLCB7IH0sIGxvY2FsZURhdGEpOworCisgICAgbV9sb2NhbGUgPSByZXNvbHZl
ZC5sb2NhbGU7CisgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVu
dGVyIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2dyYW51bGFyaXR5ID0gaW50bE9wdGlvbjxHcmFudWxhcml0eT4oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ncmFudWxhcml0eSwgeyB7ICJncmFwaGVtZSJf
cywgR3JhbnVsYXJpdHk6OkdyYXBoZW1lIH0sIHsgIndvcmQiX3MsIEdyYW51bGFyaXR5OjpXb3Jk
IH0sIHsgInNlbnRlbmNlIl9zLCBHcmFudWxhcml0eTo6U2VudGVuY2UgfSB9LCAiZ3JhbnVsYXJp
dHkgbXVzdCBiZSBlaXRoZXIgXCJncmFwaGVtZVwiLCBcIndvcmRcIiwgb3IgXCJzZW50ZW5jZVwi
Il9zLCBHcmFudWxhcml0eTo6R3JhcGhlbWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisKKyAgICBVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSA9IFVCUktfQ0hBUkFD
VEVSOworICAgIHN3aXRjaCAobV9ncmFudWxhcml0eSkgeworICAgIGNhc2UgR3JhbnVsYXJpdHk6
OkdyYXBoZW1lOgorICAgICAgICB0eXBlID0gVUJSS19DSEFSQUNURVI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgR3JhbnVsYXJpdHk6OldvcmQ6CisgICAgICAgIHR5cGUgPSBVQlJLX1dPUkQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhbnVsYXJpdHk6OlNlbnRlbmNlOgorICAgICAg
ICB0eXBlID0gVUJSS19TRU5URU5DRTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgbV9zZWdtZW50ZXIgPSBzdGQ6OnVu
aXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4odWJya19vcGVu
KHR5cGUsIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIDAsICZzdGF0dXMpKTsKKyAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRlciJfcyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1pbnRs
LXNlZ21lbnRlci8jc2VjLWludGwuc2VnbWVudGVyLnByb3RvdHlwZS5zZWdtZW50CitKU1ZhbHVl
IEludGxTZWdtZW50ZXI6OnNlZ21lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBzdHJpbmdWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNT
dHJpbmcqIGpzU3RyaW5nID0gc3RyaW5nVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFN0cmluZyBzdHJpbmcgPSBq
c1N0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gQm94PFZlY3RvcjxV
Q2hhcj4+OjpjcmVhdGUoc3RyaW5nLmNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkp
OworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBzZWdt
ZW50ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVs
ZXRlcj4odWJya19zYWZlQ2xvbmUobV9zZWdtZW50ZXIuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIs
ICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21l
bnRzIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgdWJya19zZXRUZXh0KHNl
Z21lbnRlci5nZXQoKSwgdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLT5kYXRhKCksIHVwY29udmVydGVk
Q2hhcmFjdGVycy0+c2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIFNlZ21lbnRzIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisK
KyAgICByZXR1cm4gSW50bFNlZ21lbnRzOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c2VnbWVu
dHNTdHJ1Y3R1cmUoKSwgV1RGTW92ZShzZWdtZW50ZXIpLCBXVEZNb3ZlKHVwY29udmVydGVkQ2hh
cmFjdGVycyksIGpzU3RyaW5nLCBtX2dyYW51bGFyaXR5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtaW50bC5zZWdtZW50ZXIucHJvdG90eXBl
LnJlc29sdmVkb3B0aW9ucworSlNPYmplY3QqIEludGxTZWdtZW50ZXI6OnJlc29sdmVkT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkpOworICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Z3JhbnVsYXJpdHksIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgZ3JhbnVsYXJpdHlTdHJpbmcobV9ncmFudWxhcml0eSkpKTsKKyAgICByZXR1
cm4gb3B0aW9uczsKK30KKworQVNDSUlMaXRlcmFsIEludGxTZWdtZW50ZXI6OmdyYW51bGFyaXR5
U3RyaW5nKEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQoreworICAgIHN3aXRjaCAoZ3JhbnVsYXJp
dHkpIHsKKyAgICBjYXNlIEdyYW51bGFyaXR5OjpHcmFwaGVtZToKKyAgICAgICAgcmV0dXJuICJn
cmFwaGVtZSJfczsKKyAgICBjYXNlIEdyYW51bGFyaXR5OjpXb3JkOgorICAgICAgICByZXR1cm4g
IndvcmQiX3M7CisgICAgY2FzZSBHcmFudWxhcml0eTo6U2VudGVuY2U6CisgICAgICAgIHJldHVy
biAic2VudGVuY2UiX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworSlNPYmplY3QqIEludGxTZWdtZW50ZXI6
OmNyZWF0ZVNlZ21lbnREYXRhT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
U3RyaW5nKiBzdHJpbmcsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJy
ZWFrSXRlcmF0b3ImIHNlZ21lbnRlciwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5zZWdtZW50LCBqc1N1YnN0cmluZyhnbG9iYWxPYmplY3QsIHN0
cmluZywgc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4KSk7CisgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmluZGV4LCBqc051bWJlcihzdGFydEluZGV4
KSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlucHV0LCBz
dHJpbmcpOworICAgIGlmIChncmFudWxhcml0eSA9PSBJbnRsU2VnbWVudGVyOjpHcmFudWxhcml0
eTo6V29yZCkgeworICAgICAgICBpbnQzMl90IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0
dXMoJnNlZ21lbnRlcik7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5pc1dvcmRMaWtlLCBqc0Jvb2xlYW4oIShydWxlU3RhdHVzID49IFVCUktfV09SRF9O
T05FICYmIHJ1bGVTdGF0dXMgPD0gVUJSS19XT1JEX05PTkVfTElNSVQpKSk7CisgICAgfQorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMGY0MjZjNDg5
NzU2YWFkNDk3MWU2OWM2ODExOWEzZjcwZTBmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmgKQEAgLTAsMCArMSw3OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdWJyay5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxw
ZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit1c2luZyBVQnJlYWtJdGVyYXRvckRlbGV0ZXIg
PSBJQ1VEZWxldGVyPHVicmtfY2xvc2U+OworCitjbGFzcyBJbnRsU2VnbWVudGVyIGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05v
bkZpbmFsT2JqZWN0OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rp
b24gPSB0cnVlOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAg
eworICAgICAgICBzdGF0aWNfY2FzdDxJbnRsU2VnbWVudGVyKj4oY2VsbCktPkludGxTZWdtZW50
ZXI6On5JbnRsU2VnbWVudGVyKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bFNlZ21lbnRlclNw
YWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgZW51bSBjbGFzcyBHcmFudWxhcml0eSA6IHVpbnQ4
X3QgeyBHcmFwaGVtZSwgV29yZCwgU2VudGVuY2UgfTsKKworICAgIHN0YXRpYyBJbnRsU2VnbWVu
dGVyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgdm9pZCBpbml0aWFsaXplU2VnbWVudGVyKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSBsb2NhbGVzVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKTsKKworICAgIEpTVmFs
dWUgc2VnbWVudChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpIGNvbnN0OworICAgIEpTT2JqZWN0
KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKworICAgIHN0YXRpYyBK
U09iamVjdCogY3JlYXRlU2VnbWVudERhdGFPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU1N0cmlu
ZyosIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJyZWFrSXRlcmF0b3Im
LCBHcmFudWxhcml0eSk7CisKK3ByaXZhdGU6CisgICAgSW50bFNlZ21lbnRlcihWTSYsIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgZ3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkpOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVudGVy
OworICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5IHsg
R3JhbnVsYXJpdHk6OkdyYXBoZW1lIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29u
c3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNGQ5YmU5MTFlMGZlNDEyNzdhNjliNzcwOWFjNTNi
OWViZmZjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25zdHJ1
Y3Rvci5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkludGxTZWdt
ZW50ZXJQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bFNlZ21l
bnRlckNvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxTZWdtZW50ZXJDb25zdHJ1Y3Rv
ci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVu
dGVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnNl
Z21lbnRlckNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50
bFNlZ21lbnRlckNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50ZXJD
b25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHNlZ21lbnRlckNvbnN0cnVjdG9yVGFibGUKKyAgc3Vw
cG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvclN1cHBv
cnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLwor
CitJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IqIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxTZWdtZW50ZXJQcm90b3R5cGUq
IHNlZ21lbnRlclByb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIElu
dGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+
ZmluaXNoQ3JlYXRpb24odm0sIHNlZ21lbnRlclByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0
cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxTZWdtZW50ZXIoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpJbnRs
U2VnbWVudGVyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEludGxTZWdtZW50ZXIsIGNvbnN0cnVjdEludGxTZWdt
ZW50ZXIpCit7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNlZ21lbnRlclByb3RvdHlwZSkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIlNlZ21lbnRlciJfcywgTmFtZUFkZGl0
aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNlZ21lbnRlclBy
b3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOworICAgIHNlZ21lbnRlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5TZWdtZW50ZXIKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1Rhcmdl
dCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5ld1RhcmdldCA9PSBjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmplY3QtPnNlZ21lbnRlclN0cnVjdHVyZSgp
CisgICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5ld1RhcmdldCktPnNl
Z21lbnRlclN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgSW50bFNlZ21lbnRlciogc2VnbWVudGVyID0gSW50bFNlZ21lbnRlcjo6Y3JlYXRl
KHZtLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChzZWdtZW50ZXIpOworCisgICAgc2NvcGUucmVs
ZWFzZSgpOworICAgIHNlZ21lbnRlci0+aW5pdGlhbGl6ZVNlZ21lbnRlcihnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1JbnRsLlNlZ21lbnRlcgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEludGxTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJTZWdtZW50ZXIiKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09m
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwt
c2VnbWVudGVyLyNzZWMtaW50bC5zZWdtZW50ZXIuc3VwcG9ydGVkbG9jYWxlc29mCisKKyAgICAv
LyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlU2VnbWVudGVyJS5bW2F2YWlsYWJsZUxvY2Fs
ZXNdXS4KKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRs
U2VnbWVudGVyQXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExv
Y2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICBWZWN0b3I8U3Ry
aW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2Fs
ZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyhn
bG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkpKSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhkYmIxZjNhMWY3YjVkNmFlMmVlMDcxMjdiNTVkYTc5MDNlMzBlYjQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudGVyQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFNlZ21lbnRlclByb3RvdHlw
ZTsKKworY2xhc3MgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9u
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgSW50
bFNlZ21lbnRlckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsU2VnbWVu
dGVyUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJp
dmF0ZToKKyAgICBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bFNlZ21lbnRlclByb3RvdHlwZSopOworfTsK
K1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxTZWdtZW50ZXJDb25zdHJ1
Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YmJjMzQyYjgwMjliYmFjYTUzMWM2OWY0ZDY4OWU0OTM4ZWVjYmEy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNl
Z21lbnRlclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5oIgorCisj
aW5jbHVkZSAiSW50bFNlZ21lbnRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxT
ZWdtZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRlclByb3Rv
dHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwor
fQorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJJbnRsLlNlZ21lbnRlciIsICZCYXNlOjpzX2luZm8sICZzZWdtZW50ZXJQcm90b3R5cGVU
YWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsU2VnbWVudGVyUHJvdG90eXBl
KSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50ZXJQcm90b3R5cGUubHV0LmgKK0BiZWdp
biBzZWdtZW50ZXJQcm90b3R5cGVUYWJsZQorICBzZWdtZW50ICAgICAgICAgIEludGxTZWdtZW50
ZXJQcm90b3R5cGVGdW5jU2VnbWVudCAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
cmVzb2x2ZWRPcHRpb25zICBJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyAgICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsU2VnbWVudGVyUHJvdG90
eXBlKiBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxJbnRsU2VnbWVudGVyUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFNlZ21lbnRlclByb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBy
ZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKK30KKworSW50bFNlZ21lbnRlclByb3RvdHlwZTo6SW50bFNlZ21lbnRlclByb3Rv
dHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQoreworfQorCit2b2lkIEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5T
SVRJT04oKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVy
LyNzZWMtaW50bC5zZWdtZW50ZXIucHJvdG90eXBlLnNlZ21lbnQKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bFNlZ21lbnRlclByb3RvdHlwZUZ1bmNTZWdtZW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBhdXRvKiBzZWdtZW50ZXIgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdtZW50
ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFzZWdtZW50ZXIpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LlNlZ21lbnRlci5wcm90b3R5cGUuc2VnbWVudCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50ZXIiX3MpOworCisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5zZWdtZW50KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMtSW50bC5TZWdtZW50ZXIucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsU2VnbWVu
dGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
YXV0byogc2VnbWVudGVyID0ganNEeW5hbWljQ2FzdDxJbnRsU2VnbWVudGVyKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghc2VnbWVudGVyKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5TZWdtZW50ZXIucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBTZWdtZW50ZXIiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5yZXNvbHZlZE9wdGlvbnMoZ2xv
YmFsT2JqZWN0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MmZkNTljZWY2YzZmMmIxNzQ3Y2I4NGE3MTljNzNjMzBiMjMxZDA2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3Rv
dHlwZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsU2VnbWVu
dGVyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRp
Y1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisg
ICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsU2Vn
bWVudGVyUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudGVyUHJvdG90eXBlKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitw
cml2YXRlOgorICAgIEludGxTZWdtZW50ZXJQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg3MzcxZGU4MzI0OTc0MzIzZTA4NzczZDFmMDNmMmJjMTJmOGFlNmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCkBA
IC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkludGxTZWdtZW50cy5oIgorCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNp
bmNsdWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8dW5pY29kZS91Y3Vyci5o
PgorI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9J
Q1VIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFNl
Z21lbnRzOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxTZWdtZW50cykgfTsKKworSW50bFNlZ21lbnRz
KiBJbnRsU2VnbWVudHM6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzdGQ6
OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4mJiBzZWdt
ZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSlNTdHJpbmcqIHN0cmluZywgSW50
bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgYXV0byogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFNlZ21lbnRzPih2bS5oZWFwKSkgSW50
bFNlZ21lbnRzKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoc2VnbWVudGVyKSwgV1RGTW92ZShidWZm
ZXIpLCBncmFudWxhcml0eSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RyaW5n
KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50czo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworfQorCitJbnRsU2VnbWVudHM6OkludGxTZWdtZW50cyhWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3IsIFVCcmVha0l0ZXJh
dG9yRGVsZXRlcj4mJiBzZWdtZW50ZXIsIEJveDxWZWN0b3I8VUNoYXI+PiYmIGJ1ZmZlciwgSW50
bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCisgICAgLCBtX3NlZ21lbnRlcihXVEZNb3ZlKHNlZ21lbnRlcikpCisgICAgLCBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQor
eworfQorCit2b2lkIEludGxTZWdtZW50czo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1N0cmlu
Zyogc3RyaW5nKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQo
aW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIG1fc3RyaW5nLnNldCh2bSwgdGhpcywgc3RyaW5n
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMt
aW50bC5zZWdtZW50ZXIucHJvdG90eXBlLmNvbnRhaW5pbmcKK0pTVmFsdWUgSW50bFNlZ21lbnRz
Ojpjb250YWluaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW5kZXhW
YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgZG91YmxlIHZhbHVlID0gaW5kZXhW
YWx1ZS50b0ludGVnZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSBtX2J1ZmZlci0+c2l6
ZSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbnQzMl90IGluZGV4ID0g
dG9JbnQzMih2YWx1ZSk7CisKKyAgICAvLyBUaGUgcmVzdWx0IG9mIHVicmtfcHJlY2VkaW5nIGlz
IGFsd2F5cyAqc21hbGxlciogdGhhbiBvZmZzZXQsIG9yIFVCUktfRE9ORS4gSW4gdGhpcyBjYXNl
LCB3ZSBzaG91bGQgc2V0IHNjYW4gcG9zaXRpb24gd2l0aCBgaW5kZXggKyAxYC4KKyAgICAvLyBF
dmVuIGlmIGluZGV4ICsgMSBleGNlZWRzIGxlbmd0aCBvZiBzdHJpbmcgYnkgMSwgdGhpcyBpcyBk
ZXNpcmFibGUgaWYgd2Ugd2FudCB0byBzY2FuIHRoZSBsYXN0IHNlZ21lbnQuCisgICAgaW50MzJf
dCBzdGFydEluZGV4ID0gdWJya19wcmVjZWRpbmcobV9zZWdtZW50ZXIuZ2V0KCksIGluZGV4ICsg
MSk7CisgICAgaWYgKHN0YXJ0SW5kZXggPT0gVUJSS19ET05FKQorICAgICAgICBzdGFydEluZGV4
ID0gMDsKKyAgICAvLyBUaGUgcmVzdWx0IG9mIHVicmtfZm9sbG93aW5nIGlzIGFsd2F5cyBncmVh
dGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuIFNjYW4gcG9zaXRpb24gc2hvdWxkIGJlIGBp
bmRleGAuCisgICAgaW50MzJfdCBlbmRJbmRleCA9IHVicmtfZm9sbG93aW5nKG1fc2VnbWVudGVy
LmdldCgpLCBpbmRleCk7CisgICAgaWYgKGVuZEluZGV4ID09IFVCUktfRE9ORSkKKyAgICAgICAg
ZW5kSW5kZXggPSBtX2J1ZmZlci0+c2l6ZSgpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAg
IHJldHVybiBJbnRsU2VnbWVudGVyOjpjcmVhdGVTZWdtZW50RGF0YU9iamVjdChnbG9iYWxPYmpl
Y3QsIG1fc3RyaW5nLmdldCgpLCBzdGFydEluZGV4LCBlbmRJbmRleCwgKm1fc2VnbWVudGVyLCBt
X2dyYW51bGFyaXR5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2Vn
bWVudGVyLyNzZWMtJXNlZ21lbnRzcHJvdG90eXBlJS1AQGl0ZXJhdG9yCitKU09iamVjdCogSW50
bFNlZ21lbnRzOjpjcmVhdGVTZWdtZW50SXRlcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgYXV0byBzZWdtZW50ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFr
SXRlcmF0b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4odWJya19zYWZlQ2xvbmUobV9zZWdtZW50
ZXIuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRJdGVyYXRvciJfcyk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIHVicmtfZmlyc3Qoc2VnbWVudGVyLmdldCgpKTsKKyAg
ICByZXR1cm4gSW50bFNlZ21lbnRJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnNl
Z21lbnRJdGVyYXRvclN0cnVjdHVyZSgpLCBXVEZNb3ZlKHNlZ21lbnRlciksIG1fYnVmZmVyLCBt
X3N0cmluZy5nZXQoKSwgbV9ncmFudWxhcml0eSk7Cit9CisKK3ZvaWQgSW50bFNlZ21lbnRzOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsU2VnbWVudHMqPihjZWxsKTsKKyAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fc3RyaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNjNj
NzNiYTQyNTY4MTU5ZTBhYTU5YjE2NjM4ZTU4NjczMzg1ODAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuaApAQCAtMCwwICsxLDY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRsU2VnbWVudGVy
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsU2VnbWVudHMgZmluYWwgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmlu
YWxPYmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9
IHRydWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7Cisg
ICAgICAgIHN0YXRpY19jYXN0PEludGxTZWdtZW50cyo+KGNlbGwpLT5JbnRsU2VnbWVudHM6On5J
bnRsU2VnbWVudHMoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsU2VnbWVudHNTcGFjZTxtb2Rl
PigpOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudHMqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxl
dGVyPiYmLCBCb3g8VmVjdG9yPFVDaGFyPj4mJiwgSlNTdHJpbmcqLCBJbnRsU2VnbWVudGVyOjpH
cmFudWxhcml0eSk7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpT
VmFsdWUgY29udGFpbmluZyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgaW5kZXhWYWx1ZSk7Cisg
ICAgSlNPYmplY3QqIGNyZWF0ZVNlZ21lbnRJdGVyYXRvcihKU0dsb2JhbE9iamVjdCopOworCisg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitw
cml2YXRlOgorICAgIEludGxTZWdtZW50cyhWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0
cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPiYmLCBCb3g8VmVjdG9yPFVD
aGFyPj4mJiwgSW50bFNlZ21lbnRlcjo6R3JhbnVsYXJpdHkpOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU1N0cmluZyopOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJh
dG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVudGVyOworICAgIEJveDxWZWN0b3I8
VUNoYXI+PiBtX2J1ZmZlcjsKKyAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fc3RyaW5nOwor
ICAgIEludGxTZWdtZW50ZXI6OkdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzOTY1MGM0ODBjMTNjZTIy
YWRkNzg4Y2EwOTU3YTU1NWQ0ZGJjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTAx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxTZWdt
ZW50c1Byb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVyYXRvcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsU2VnbWVudHNQcm90b3R5cGUubHV0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFNlZ21lbnRzUHJvdG90
eXBlOjpzX2luZm8gPSB7ICIlU2VnbWVudHMlIiwgJkJhc2U6OnNfaW5mbywgJnNlZ21lbnRzUHJv
dG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFNlZ21lbnRzUHJv
dG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxTZWdtZW50c1Byb3RvdHlwZS5sdXQuaAor
QGJlZ2luIHNlZ21lbnRzUHJvdG90eXBlVGFibGUKKyAgY29udGFpbmluZyAgICAgICBJbnRsU2Vn
bWVudHNQcm90b3R5cGVGdW5jQ29udGFpbmluZyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
K0BlbmQKKyovCisKK0ludGxTZWdtZW50c1Byb3RvdHlwZSogSW50bFNlZ21lbnRzUHJvdG90eXBl
OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbnRsU2VnbWVudHNQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsU2VnbWVudHNQcm90b3R5
cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxTZWdtZW50
c1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsU2VnbWVudHNQcm90b3R5cGU6OkludGxT
ZWdtZW50c1Byb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxTZWdtZW50c1Byb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8o
KSkpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBJbnRsU2VnbWVudHNQcm90b3R5cGVGdW5jSXRlcmF0
b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAw
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtc2VnbWVudGVyLyNzZWMt
JXNlZ21lbnRzcHJvdG90eXBlJS5jb250YWluaW5nCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNDb250YWluaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBhdXRvKiBzZWdtZW50cyA9IGpzRHluYW1pY0Nhc3Q8SW50bFNlZ21lbnRzKj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghc2VnbWVudHMpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIlU2VnbWVudHMucHJv
dG90eXBlJS5jb250YWluaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIFNlZ21lbnRzIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jb250YWluaW5nKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLWludGwtc2VnbWVudGVyLyNzZWMtJXNlZ21lbnRzcHJvdG90eXBlJS1AQGl0ZXJhdG9yCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVy
YXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogc2VnbWVudHMgPSBqc0R5bmFtaWND
YXN0PEludGxTZWdtZW50cyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IXNlZ21lbnRzKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiJVNlZ21lbnRzLnByb3RvdHlwZSVbQEBpdGVyYXRvcl0gY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgU2VnbWVudHMiX3MpOworCisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudHMtPmNy
ZWF0ZVNlZ21lbnRJdGVyYXRvcihnbG9iYWxPYmplY3QpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21l
bnRzUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVu
dHNQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjQ0NGRhMTM5ZGI1OTliZTlkZDllNTBlYWExOTky
NDVlNWE0NDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEludGxTZWdtZW50c1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSW50bFNlZ21lbnRzUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsU2VnbWVudHNQ
cm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRsU2VnbWVu
dHNQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDM5MjM1
ZTIzY2QzNGM3MmJmMTY4NmQ2MDUzYmVhZGM1NWY3MGMzNjUuLjVhYjdmNTI4OWI0ZGE5ZWU1NTMy
NzJiMDNkOGIzOGYyYjQ1YmM5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg2LDYgKzg2LDEyIEBACiAjaW5jbHVkZSAiSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5oIgogI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNs
dWRlICJJbnRsU2VnbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRv
clByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50ZXIuaCIKKyNpbmNsdWRlICJJbnRs
U2VnbWVudGVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCisjaW5jbHVk
ZSAiSW50bFNlZ21lbnRzUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FycmF5QnVm
ZmVyLmgiCkBAIC0xMDE4LDYgKzEwMjQsMjQgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3Iq
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAg
ICAgICAgICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZSA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShp
bml0LnZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
aW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7
CiAgICAgICAgICAgICBpbml0LnNldChJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUp
KTsKICAgICAgICAgfSk7CisgICAgbV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUuaW5pdExhdGVy
KAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpOworICAgICAgICAgICAgSW50bFNlZ21lbnRJdGVyYXRvclByb3Rv
dHlwZSogc2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlID0gSW50bFNlZ21lbnRJdGVyYXRvclByb3Rv
dHlwZTo6Y3JlYXRlKGluaXQudm0sIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQ
cm90b3R5cGUoKSkpOworICAgICAgICAgICAgaW5pdC5zZXQoSW50bFNlZ21lbnRJdGVyYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgc2VnbWVudEl0ZXJhdG9yUHJv
dG90eXBlKSk7CisgICAgICAgIH0pOworICAgIG1fc2VnbWVudGVyU3RydWN0dXJlLmluaXRMYXRl
cigKKyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIEludGxTZWdtZW50ZXJQcm90b3R5cGUq
IHNlZ21lbnRlclByb3RvdHlwZSA9IEludGxTZWdtZW50ZXJQcm90b3R5cGU6OmNyZWF0ZShpbml0
LnZtLCBJbnRsU2VnbWVudGVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAg
ICBpbml0LnNldChJbnRsU2VnbWVudGVyOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBzZWdtZW50ZXJQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9zZWdtZW50
c1N0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1
Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRs
U2VnbWVudHNQcm90b3R5cGUqIHNlZ21lbnRzUHJvdG90eXBlID0gSW50bFNlZ21lbnRzUHJvdG90
eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsU2VnbWVudHNQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxTZWdtZW50czo6Y3Jl
YXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgc2VnbWVudHNQcm90b3R5cGUpKTsK
KyAgICAgICAgfSk7CiAgICAgbV9kZWZhdWx0Q29sbGF0b3IuaW5pdExhdGVyKAogICAgICAgICBb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SW50bENvbGxhdG9yPiYgaW5pdCkgewogICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpOwpAQCAtMTg1Miw2ICsxODc2LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNP
YmplY3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+
bV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09i
amVjdC0+bV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhp
c09iamVjdC0+bV9zZWdtZW50ZXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09i
amVjdC0+bV9zZWdtZW50c1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKIAogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzZWRkYWUzMjdjMmViZGY2
OWIxMzIzZjg4NjA0NGEwYjY2MDQzYTg0Li45OTllNjhiNDYwOGQ2ZWU1ZjY3YmI0ZWQ4YTA4ZmU5
NTFhZDM2MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTMwMiw2ICszMDIsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcmVsYXRpdmVUaW1l
Rm9ybWF0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX3NlZ21lbnRJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9zZWdtZW50ZXJTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fc2VnbWVudHNTdHJ1Y3R1cmU7CiAKICAg
ICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5jdGlvbjsK
ICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJGdW5jdGlv
bjsKQEAgLTgwNSw2ICs4MDgsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVyZSgp
IHsgcmV0dXJuIG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSog
cGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdl
dCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCkg
eyByZXR1cm4gbV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAg
U3RydWN0dXJlKiBzZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3NlZ21lbnRJ
dGVyYXRvclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHNlZ21lbnRlclN0
cnVjdHVyZSgpIHsgcmV0dXJuIG1fc2VnbWVudGVyU3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAg
IFN0cnVjdHVyZSogc2VnbWVudHNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3NlZ21lbnRzU3RydWN0
dXJlLmdldCh0aGlzKTsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVE
ZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVtb3Rl
RGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgKaW5kZXggNGFiYzAyZDZhMTQ5YzQ2MGIzZjc5ZDQ4NGQxNzA4N2ZhOGRl
NDMxNi4uOTAyOWFlN2RkODhlNTM4YTA3ZmQ3OWQ1YmQ4ZWJhOWE0OGNkODk4NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00OTEsNiArNDkxLDcg
QEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsK
ICAgICB2KEJvb2wsIHVzZVdlYWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWFr
UmVmIGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgdHJ1ZSwgTm9ybWFs
LCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAogICAgIHYoQm9v
bCwgdXNlSW50bERpc3BsYXlOYW1lcywgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5E
aXNwbGF5TmFtZXMgY29uc3RydWN0b3IuIikgXAorICAgIHYoQm9vbCwgdXNlSW50bFNlZ21lbnRl
ciwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5TZWdtZW50ZXIgY29uc3RydWN0b3Iu
IikgXAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3Jt
YWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJv
ZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFp
bSB0byBiZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNl
LCBOb3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2Jq
ZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBmb3JjZU1p
bmlWTU1vZGUsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1pbmkgVk0g
bW9kZSBvbi4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMjUwMzEx
NWFlMTE3MWM0ODUxMTAxM2MxZDRkYWNjOGY0Mzc4ODk4Mi4uNWY3NzE4MTBlZWY1N2E0MTc2NzNl
NmYyYjk2MmRjZGJmYWMzZGNhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtNzIsNiArNzIsOSBAQAogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRl
ICJJbnRsUGx1cmFsUnVsZXMuaCIKICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Lmgi
CisjaW5jbHVkZSAiSW50bFNlZ21lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkludGxTZWdtZW50
ZXIuaCIKKyNpbmNsdWRlICJJbnRsU2VnbWVudHMuaCIKICNpbmNsdWRlICJJc29IZWFwQ2VsbFR5
cGUuaCIKICNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSklU
Q29kZS5oIgpAQCAtMzE0LDYgKzMxNyw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5Mb29wLCBib29sKiBzdWNjZXNzKQogICAgICwg
aW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRs
TnVtYmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4oKSkKICAgICAsIGludGxSZWxhdGl2
ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFJlbGF0
aXZlVGltZUZvcm1hdD4oKSkKKyAgICAsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21lbnRJdGVyYXRvcj4oKSkKKyAgICAsIGlu
dGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFNlZ21l
bnRlcj4oKSkKKyAgICAsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6
OmNyZWF0ZTxJbnRsU2VnbWVudHM+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICwg
d2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8
SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKICAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKSkK
QEAgLTE1MTUsNiArMTUyMSw5IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUuCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCBpbnRs
TnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0KQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCBp
bnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxSdWxlcykKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0
U3BhY2UsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBl
LmdldCgpLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlw
ZS5nZXQoKSwgSW50bFNlZ21lbnRlcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLmdldCgp
LCBJbnRsU2VnbWVudHMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUb1dhc21JQ0NhbGxlZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3NlbWJseUNv
ZGVCbG9ja0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFz
aDoweDlhZDk5NWNkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA2OGViNjVhYmUy
ZWU0YzRmODg3MTYwZTZlZTg0MDExNThhNDdjNTY4Li41MmNhYjI3MGEwYzQxMjUwMjk2YzhhNDc4
YTRjMmYzNjNjN2MwMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEzMSw2
ICsxMzEsOSBAQCBjbGFzcyBJbnRsTG9jYWxlOwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNs
YXNzIEludGxQbHVyYWxSdWxlczsKIGNsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ7CitjbGFz
cyBJbnRsU2VnbWVudEl0ZXJhdG9yOworY2xhc3MgSW50bFNlZ21lbnRlcjsKK2NsYXNzIEludGxT
ZWdtZW50czsKIGNsYXNzIEpTQVBJR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNBUElXcmFwcGVyR2xv
YmFsT2JqZWN0OwogY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0OwpAQCAtNDA4LDYgKzQxMSw5IEBA
IGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJs
eUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlw
ZT4gaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNv
SGVhcENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlw
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsU2VnbWVudEl0ZXJh
dG9ySGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGlu
dGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxs
VHlwZT4gaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUNvZGVCbG9j
a0hlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJB
c3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOwpAQCAtNTY3LDYgKzU3Myw5IEBAIGNsYXNzIFZN
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExp
c3ROb2RlPFZNPiB7CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
TnVtYmVyRm9ybWF0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihpbnRsUGx1cmFsUnVsZXNTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50ZXJTcGFjZSkKKyAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50c1NwYWNlKQogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5j
cHAKaW5kZXggYTc3ZmQ4YzY0MGE0OTY0ODI5NzdiOWJlYzI4NzZkYTM1NWUyMmFhZS4uNDI1ZDRk
NThjNWJiNTc3MjY2ZGE3M2VhYzVjYjU2OTQ5NWFhZTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcApAQCAtNDI2LDcgKzQyNiw3IEBAIGJvb2wgU3RyaW5nOjpwZXJjZW50YWdlKGludCYg
cmVzdWx0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1WZWN0b3I8VUNoYXI+IFN0cmlu
Zzo6Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBjb25zdAorVmVjdG9yPFVDaGFyPiBT
dHJpbmc6OmNoYXJhY3RlcnNXaXRob3V0TnVsbFRlcm1pbmF0aW9uKCkgY29uc3QKIHsKICAgICBW
ZWN0b3I8VUNoYXI+IHJlc3VsdDsKIApAQCAtNDQxLDEzICs0NDEsMTggQEAgVmVjdG9yPFVDaGFy
PiBTdHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29uc3QKICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYgPSBtX2ltcGwtPmNoYXJhY3RlcnMxNigpOwog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXJzMTYsIG1faW1wbC0+bGVuZ3RoKCkp
OwogICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVuZCgwKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCitWZWN0b3I8VUNoYXI+IFN0cmluZzo6Y2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKSBjb25zdAoreworICAgIGF1dG8gcmVzdWx0ID0gY2hhcmFjdGVyc1dp
dGhvdXROdWxsVGVybWluYXRpb24oKTsKKyAgICByZXN1bHQuYXBwZW5kKDApOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKIFN0cmluZyBTdHJpbmc6Om51bWJlcihpbnQgbnVtYmVyKQogewogICAg
IHJldHVybiBudW1iZXJUb1N0cmluZ1NpZ25lZDxTdHJpbmc+KG51bWJlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaAppbmRleCBmOTRlZGQ5MzkwNDQ2NTU3Zjg3NmY2MDZiYjJjNzMxZGM2OThmNjU0
Li4wZjE2NjJkZjRiYzg0MGMzN2Q3ZmZkNzU1YWMwNWE0NTIxMDZjNzExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKQEAgLTIwMiw2ICsyMDIsNyBAQCBjbGFzcyBTdHJpbmcgZmluYWwgewogICAg
IHNpemVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgc3RhcnQg
PSBNYXhMZW5ndGgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQo
c3RyaW5nLmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhvdXRO
dWxsVGVybWluYXRpb24oKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMy
IGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI1NmUyMTcyZTk5NWU5ZDRj
ZTM3NGJmZjY4MGNjNDFiOWFkMzZlYWYuLjI3YjhiYTQ0NDA1YzAzMGY5MjM0ZWYxYjFlODI4YTdl
ZDRkMWFmMjggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDctMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgSW50bC5TZWdtZW50ZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzYzOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1z
ZWdtZW50ZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxk
Tm90VGhyb3cpOgorICAgICAgICAoZnVuYyk6CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFt
bDoKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIwLTA3LTMwICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgc3RyZXNzL29w
ZXJhbmQtc2hvdWxkLWZpdC1pbi1hYnN0cmFjdC1oZWFwLWVuY29kZWQtcGF5bG9hZC1mb3JtYXQu
anMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtc2VnbWVudGVyLmpzIGIvSlNUZXN0
cy9zdHJlc3MvaW50bC1zZWdtZW50ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg1MDZmMzAzNTNjMDExZjRm
YWY2YmRiYjVkZmRhODM3ZDk5NWRiYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2ludGwtc2VnbWVudGVyLmpzCkBAIC0wLDAgKzEsMzMzIEBACisvL0AgcnVuRGVmYXVsdCgiLS11
c2VJbnRsU2VnbWVudGVyPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkTm90VGhyb3co
ZnVuYykgeworICAgIGZ1bmMoKTsKK30KKworeworICAgIHNob3VsZEJlKEludGwuU2VnbWVudGVy
IGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworICAgIHNob3VsZEJlKEludGwuU2VnbWVudGVy
Lmxlbmd0aCwgMCk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihJbnRsLlNlZ21lbnRlciwgJ3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxzZSk7CisgICAgc2hv
dWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlNlZ21lbnRlciwgJ3By
b3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEludGwuU2VnbWVudGVyLCAncHJvdG90eXBlJykuY29uZmlndXJh
YmxlLCBmYWxzZSk7CisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiZnIi
KTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShzZWdtZW50ZXIucmVzb2x2ZWRPcHRpb25z
KCkpLCBgeyJsb2NhbGUiOiJmciIsImdyYW51bGFyaXR5IjoiZ3JhcGhlbWUifWApOworICAgIHNo
b3VsZEJlKHNlZ21lbnRlci50b1N0cmluZygpLCBgW29iamVjdCBJbnRsLlNlZ21lbnRlcl1gKTsK
KyAgICBzaG91bGROb3RUaHJvdygoKSA9PiBuZXcgSW50bC5TZWdtZW50ZXIoKSk7Cit9CisKK3sK
KyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtncmFudWxhcml0
eTogIndvcmQifSk7CisKKyAgICBsZXQgaW5wdXQgPSAiTW9pPyAgTidlc3QtY2UgcGFzLiI7Cisg
ICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJl
c3VsdHMgPSBbCisgICAgICAgIFsgMCwgMywgIk1vaSIsIHRydWUgXSwKKyAgICAgICAgWyAzLCA0
LCAiPyIsIGZhbHNlIF0sCisgICAgICAgIFsgNCwgNiwgIiAgIiwgZmFsc2UgXSwKKyAgICAgICAg
WyA2LCAxMSwgIk4nZXN0IiwgdHJ1ZSBdLAorICAgICAgICBbIDExLCAxMiwgIi0iLCBmYWxzZSBd
LAorICAgICAgICBbIDEyLCAxNCwgImNlIiwgdHJ1ZSBdLAorICAgICAgICBbIDE0LCAxNSwgIiAi
LCBmYWxzZSBdLAorICAgICAgICBbIDE1LCAxOCwgInBhcyIsIHRydWUgXSwKKyAgICAgICAgWyAx
OCwgMTksICIuIiwgZmFsc2UgXSwKKyAgICBdOworICAgIGxldCBjdXJzb3IgPSAwOworICAgIGZv
ciAobGV0IHtzZWdtZW50LCBpbmRleCwgaXNXb3JkTGlrZX0gb2Ygc2VnbWVudHMpIHsKKyAgICAg
ICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbY3Vyc29yKytdOworICAgICAgICBzaG91bGRCZShyZXN1
bHRbMF0sIGluZGV4KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCBpbmRleCArIHNlZ21l
bnQubGVuZ3RoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzJdLCBzZWdtZW50KTsKKyAgICAg
ICAgc2hvdWxkQmUocmVzdWx0WzNdLCBpc1dvcmRMaWtlKTsKKyAgICB9CisKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShJbnRsLlNlZ21lbnRlci5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2ZyJykp
LCBgWyJmciJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudGVyLnJlc29s
dmVkT3B0aW9ucygpKSwgYHsibG9jYWxlIjoiZnIiLCJncmFudWxhcml0eSI6IndvcmQifWApOwor
fQorCit7CisgICAgbGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiZnIiLCB7Z3Jh
bnVsYXJpdHk6ICJncmFwaGVtZSJ9KTsKKworICAgIGxldCBpbnB1dCA9ICJNb2k/ICBOJ2VzdC1j
ZSBwYXMuIjsKKyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisK
KyAgICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVudCwgaW5kZXgsIGlzV29y
ZExpa2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAgIGxldCBjdXJyZW50ID0gY3Vyc29yKys7Cisg
ICAgICAgIHNob3VsZEJlKHNlZ21lbnQsIGlucHV0W2N1cnJlbnRdKTsKKyAgICAgICAgc2hvdWxk
QmUoaW5kZXgsIGN1cnJlbnQpOworICAgICAgICBzaG91bGRCZShpc1dvcmRMaWtlLCB1bmRlZmlu
ZWQpOworICAgIH0KKworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRlci5yZXNv
bHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImZyIiwiZ3JhbnVsYXJpdHkiOiJncmFwaGVtZSJ9
YCk7Cit9CisKK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJlbiIs
IHtncmFudWxhcml0eTogInNlbnRlbmNlIn0pOworCisgICAgbGV0IGlucHV0ID0gIlBlcmZvcm1h
bmNlIGlzIGEgdG9wIHByaW9yaXR5IGZvciBXZWJLaXQuIFdlIGFkaGVyZSB0byBhIHNpbXBsZSBk
aXJlY3RpdmUgZm9yIGFsbCB3b3JrIHdlIGRvIG9uIFdlYktpdDogVGhlIHdheSB0byBtYWtlIGEg
cHJvZ3JhbSBmYXN0ZXIgaXMgdG8gbmV2ZXIgbGV0IGl0IGdldCBzbG93ZXIuIjsKKyAgICBsZXQg
c2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVzdWx0cyA9
IFsKKyAgICAgICAgWyAwLCA0MiwgIlBlcmZvcm1hbmNlIGlzIGEgdG9wIHByaW9yaXR5IGZvciBX
ZWJLaXQuICIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDQyLCAxNjcsICJXZSBhZGhlcmUgdG8g
YSBzaW1wbGUgZGlyZWN0aXZlIGZvciBhbGwgd29yayB3ZSBkbyBvbiBXZWJLaXQ6IFRoZSB3YXkg
dG8gbWFrZSBhIHByb2dyYW0gZmFzdGVyIGlzIHRvIG5ldmVyIGxldCBpdCBnZXQgc2xvd2VyLiIs
IHVuZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQg
e3NlZ21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQg
cmVzdWx0ID0gcmVzdWx0c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwg
aW5kZXgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5n
dGgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91
bGRCZShyZXN1bHRbM10sIGlzV29yZExpa2UpOworICAgIH0KKworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KHNlZ21lbnRlci5yZXNvbHZlZE9wdGlvbnMoKSksIGB7ImxvY2FsZSI6ImVuIiwi
Z3JhbnVsYXJpdHkiOiJzZW50ZW5jZSJ9YCk7Cit9CisKKy8vIGxhbmd1YWdlcyB3aXRob3V0IHNw
YWNlcy4KK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJqYSIsIHtn
cmFudWxhcml0eTogIndvcmQifSk7CisKKyAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9JX0FtX2FfQ2F0CisgICAgbGV0IGlucHV0ID0gIuWQvui8qeOBr+eMq+OBp+OBguOCi+OA
guWQjeWJjeOBr+OBvuOBoOeEoeOBhOOAguOBqeOBk+OBp+eUn+OCjOOBn+OBi+OBqOOCk+OBqOim
i+W9k+OBjOOBpOOBi+OBrOOAgiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21l
bnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgMiwgIuWQvui8
qSIsIHRydWUgXSwKKyAgICAgICAgWyAyLCAzLCAi44GvIiwgdHJ1ZSBdLAorICAgICAgICBbIDMs
IDQsICLnjKsiLCB0cnVlIF0sCisgICAgICAgIFsgNCwgNSwgIuOBpyIsIHRydWUgXSwKKyAgICAg
ICAgWyA1LCA3LCAi44GC44KLIiwgdHJ1ZSBdLAorICAgICAgICBbIDcsIDgsICLjgIIiLCBmYWxz
ZSBdLAorICAgICAgICBbIDgsIDEwLCAi5ZCN5YmNIiwgdHJ1ZSBdLAorICAgICAgICBbIDEwLCAx
MSwgIuOBryIsIHRydWUgXSwKKyAgICAgICAgWyAxMSwgMTMsICLjgb7jgaAiLCB0cnVlIF0sCisg
ICAgICAgIFsgMTMsIDE1LCAi54Sh44GEIiwgdHJ1ZSBdLAorICAgICAgICBbIDE1LCAxNiwgIuOA
giIsIGZhbHNlIF0sCisgICAgICAgIFsgMTYsIDE4LCAi44Gp44GTIiwgdHJ1ZSBdLAorICAgICAg
ICBbIDE4LCAxOSwgIuOBpyIsIHRydWUgXSwKKyAgICAgICAgWyAxOSwgMjEsICLnlJ/jgowiLCB0
cnVlIF0sCisgICAgICAgIFsgMjEsIDIzLCAi44Gf44GLIiwgdHJ1ZSBdLAorICAgICAgICBbIDIz
LCAyNiwgIuOBqOOCk+OBqCIsIHRydWUgXSwKKyAgICAgICAgWyAyNiwgMjgsICLopovlvZMiLCB0
cnVlIF0sCisgICAgICAgIFsgMjgsIDI5LCAi44GMIiwgdHJ1ZSBdLAorICAgICAgICBbIDI5LCAz
MCwgIuOBpCIsIHRydWUgXSwKKyAgICAgICAgWyAzMCwgMzEsICLjgYsiLCB0cnVlIF0sCisgICAg
ICAgIFsgMzEsIDMyLCAi44GsIiwgdHJ1ZSBdLAorICAgICAgICBbIDMyLCAzMywgIuOAgiIsIGZh
bHNlIF0sCisgICAgXTsKKyAgICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVu
dCwgaW5kZXgsIGlzV29yZExpa2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAgIGxldCByZXN1bHQg
PSByZXN1bHRzW2N1cnNvcisrXTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCBpbmRleCk7
CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgaW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgc2VnbWVudCk7CisgICAgICAgIHNob3VsZEJlKHJl
c3VsdFszXSwgaXNXb3JkTGlrZSk7CisgICAgfQorfQorCit7CisgICAgbGV0IHNlZ21lbnRlciA9
IG5ldyBJbnRsLlNlZ21lbnRlcigiamEiLCB7Z3JhbnVsYXJpdHk6ICJncmFwaGVtZSJ9KTsKKwor
ICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lfQW1fYV9DYXQKKyAgICBsZXQg
aW5wdXQgPSAi5ZC+6Lyp44Gv54yr44Gn44GC44KL44CC5ZCN5YmN44Gv44G+44Gg54Sh44GE44CC
44Gp44GT44Gn55Sf44KM44Gf44GL44Go44KT44Go6KaL5b2T44GM44Gk44GL44Gs44CCIjsKKyAg
ICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQgcmVz
dWx0cyA9IFsKKyAgICAgICAgWyAwLCAxLCAi5ZC+IiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsg
MSwgMiwgIui8qSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIsIDMsICLjga8iLCB1bmRlZmlu
ZWQgXSwKKyAgICAgICAgWyAzLCA0LCAi54yrIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgNCwg
NSwgIuOBpyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDUsIDYsICLjgYIiLCB1bmRlZmluZWQg
XSwKKyAgICAgICAgWyA2LCA3LCAi44KLIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgNywgOCwg
IuOAgiIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDgsIDksICLlkI0iLCB1bmRlZmluZWQgXSwK
KyAgICAgICAgWyA5LCAxMCwgIuWJjSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDEwLCAxMSwg
IuOBryIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDExLCAxMiwgIuOBviIsIHVuZGVmaW5lZCBd
LAorICAgICAgICBbIDEyLCAxMywgIuOBoCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDEzLCAx
NCwgIueEoSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE0LCAxNSwgIuOBhCIsIHVuZGVmaW5l
ZCBdLAorICAgICAgICBbIDE1LCAxNiwgIuOAgiIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE2
LCAxNywgIuOBqSIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDE3LCAxOCwgIuOBkyIsIHVuZGVm
aW5lZCBdLAorICAgICAgICBbIDE4LCAxOSwgIuOBpyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBb
IDE5LCAyMCwgIueUnyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIwLCAyMSwgIuOCjCIsIHVu
ZGVmaW5lZCBdLAorICAgICAgICBbIDIxLCAyMiwgIuOBnyIsIHVuZGVmaW5lZCBdLAorICAgICAg
ICBbIDIyLCAyMywgIuOBiyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDIzLCAyNCwgIuOBqCIs
IHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI0LCAyNSwgIuOCkyIsIHVuZGVmaW5lZCBdLAorICAg
ICAgICBbIDI1LCAyNiwgIuOBqCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI2LCAyNywgIuim
iyIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI3LCAyOCwgIuW9kyIsIHVuZGVmaW5lZCBdLAor
ICAgICAgICBbIDI4LCAyOSwgIuOBjCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDI5LCAzMCwg
IuOBpCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDMwLCAzMSwgIuOBiyIsIHVuZGVmaW5lZCBd
LAorICAgICAgICBbIDMxLCAzMiwgIuOBrCIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDMyLCAz
MywgIuOAgiIsIHVuZGVmaW5lZCBdLAorICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAg
Zm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAg
ICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJl
c3VsdFswXSwgaW5kZXgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2Vn
bWVudC5sZW5ndGgpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAg
ICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlzV29yZExpa2UpOworICAgIH0KK30KKworeworICAg
IGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAi
c2VudGVuY2UifSk7CisKKyAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JX0Ft
X2FfQ2F0CisgICAgbGV0IGlucHV0ID0gIuWQvui8qeOBr+eMq+OBp+OBguOCi+OAguWQjeWJjeOB
r+OBvuOBoOeEoeOBhOOAguOBqeOBk+OBp+eUn+OCjOOBn+OBi+OBqOOCk+OBqOimi+W9k+OBjOOB
pOOBi+OBrOOAgiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQp
OworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgOCwgIuWQvui8qeOBr+eMq+OB
p+OBguOCi+OAgiIsIHVuZGVmaW5lZCBdLAorICAgICAgICBbIDgsIDE2LCAi5ZCN5YmN44Gv44G+
44Gg54Sh44GE44CCIiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgMTYsIDMzLCAi44Gp44GT44Gn
55Sf44KM44Gf44GL44Go44KT44Go6KaL5b2T44GM44Gk44GL44Gs44CCIiwgdW5kZWZpbmVkIF0s
CisgICAgXTsKKyAgICBsZXQgY3Vyc29yID0gMDsKKyAgICBmb3IgKGxldCB7c2VnbWVudCwgaW5k
ZXgsIGlzV29yZExpa2V9IG9mIHNlZ21lbnRzKSB7CisgICAgICAgIGxldCByZXN1bHQgPSByZXN1
bHRzW2N1cnNvcisrXTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCBpbmRleCk7CisgICAg
ICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgaW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7CisgICAgICAg
IHNob3VsZEJlKHJlc3VsdFsyXSwgc2VnbWVudCk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsz
XSwgaXNXb3JkTGlrZSk7CisgICAgfQorfQorCisvLyBTdXJyb2dhdGUgcGFpcnMuCit7CisgICAg
bGV0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigiamEiLCB7Z3JhbnVsYXJpdHk6ICJn
cmFwaGVtZSJ9KTsKKyAgICBsZXQgaW5wdXQgPSAi8KCut+mHjuWutiI7CisgICAgbGV0IHNlZ21l
bnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOworCisgICAgbGV0IHJlc3VsdHMgPSBbCisg
ICAgICAgIFsgMCwgMiwgIvCgrrciLCB1bmRlZmluZWQgXSwKKyAgICAgICAgWyAyLCAzLCAi6YeO
IiwgdW5kZWZpbmVkIF0sCisgICAgICAgIFsgMywgNCwgIuWutiIsIHVuZGVmaW5lZCBdLAorICAg
IF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4LCBp
c1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0c1tj
dXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5kZXgpOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgpOworICAgICAgICBzaG91
bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10sIGlz
V29yZExpa2UpOworICAgIH0KK30KKworeworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50bC5T
ZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAid29yZCJ9KTsKKyAgICBsZXQgaW5wdXQgPSAi
8KCut+mHjuWutiI7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQp
OworCisgICAgbGV0IHJlc3VsdHMgPSBbCisgICAgICAgIFsgMCwgMiwgIvCgrrciLCB0cnVlIF0s
CisgICAgICAgIFsgMiwgNCwgIumHjuWutiIsIHRydWUgXSwKKyAgICBdOworICAgIGxldCBjdXJz
b3IgPSAwOworICAgIGZvciAobGV0IHtzZWdtZW50LCBpbmRleCwgaXNXb3JkTGlrZX0gb2Ygc2Vn
bWVudHMpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3VsdHNbY3Vyc29yKytdOworICAgICAg
ICBzaG91bGRCZShyZXN1bHRbMF0sIGluZGV4KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFd
LCBpbmRleCArIHNlZ21lbnQubGVuZ3RoKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzJdLCBz
ZWdtZW50KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzNdLCBpc1dvcmRMaWtlKTsKKyAgICB9
Cit9CisKK3sKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJqYSIsIHtn
cmFudWxhcml0eTogInNlbnRlbmNlIn0pOworICAgIGxldCBpbnB1dCA9ICLwoK636YeO5a62IjsK
KyAgICBsZXQgc2VnbWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBsZXQg
cmVzdWx0cyA9IFsKKyAgICAgICAgWyAwLCA0LCAi8KCut+mHjuWutiIsIHVuZGVmaW5lZCBdLAor
ICAgIF07CisgICAgbGV0IGN1cnNvciA9IDA7CisgICAgZm9yIChsZXQge3NlZ21lbnQsIGluZGV4
LCBpc1dvcmRMaWtlfSBvZiBzZWdtZW50cykgeworICAgICAgICBsZXQgcmVzdWx0ID0gcmVzdWx0
c1tjdXJzb3IrK107CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgaW5kZXgpOworICAgICAg
ICBzaG91bGRCZShyZXN1bHRbMV0sIGluZGV4ICsgc2VnbWVudC5sZW5ndGgpOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbMl0sIHNlZ21lbnQpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbM10s
IGlzV29yZExpa2UpOworICAgIH0KK30KKworeworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcgSW50
bC5TZWdtZW50ZXIoImphIiwge2dyYW51bGFyaXR5OiAiZ3JhcGhlbWUifSk7CisgICAgbGV0IGlu
cHV0ID0gIvCgrrfph47lrrYiOworICAgIGxldCBzZWdtZW50cyA9IHNlZ21lbnRlci5zZWdtZW50
KGlucHV0KTsKKworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5p
bmcoMCkpLCBgeyJzZWdtZW50Ijoi8KCutyIsImluZGV4IjowLCJpbnB1dCI6IvCgrrfph47lrrYi
fWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmcoMSkp
LCBgeyJzZWdtZW50Ijoi8KCutyIsImluZGV4IjowLCJpbnB1dCI6IvCgrrfph47lrrYifWApOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNlZ21lbnRzLmNvbnRhaW5pbmcoMikpLCBgeyJz
ZWdtZW50Ijoi6YeOIiwiaW5kZXgiOjIsImlucHV0Ijoi8KCut+mHjuWutiJ9YCk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmluZygzKSksIGB7InNlZ21lbnQi
OiLlrrYiLCJpbmRleCI6MywiaW5wdXQiOiLwoK636YeO5a62In1gKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShzZWdtZW50cy5jb250YWluaW5nKDQpKSwgdW5kZWZpbmVkKTsKK30KKwor
eworICAgIC8vIOKUgzAgMSAyIDMgNCA14pSDNuKUgzfilIM44pSDOQorICAgIC8vIOKUg0EgbCBs
IG8gbiBz4pSDLeKUg3nilIMh4pSDCisgICAgbGV0IGlucHV0ID0gIkFsbG9ucy15ISI7CisKKyAg
ICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtncmFudWxhcml0eTog
IndvcmQifSk7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21lbnQoaW5wdXQpOwor
ICAgIGxldCBjdXJyZW50ID0gdW5kZWZpbmVkOworCisgICAgY3VycmVudCA9IHNlZ21lbnRzLmNv
bnRhaW5pbmcoMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNl
Z21lbnQiOiJBbGxvbnMiLCJpbmRleCI6MCwiaW5wdXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtl
Ijp0cnVlfWApOworCisgICAgY3VycmVudCA9IHNlZ21lbnRzLmNvbnRhaW5pbmcoNSk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiJBbGxvbnMiLCJp
bmRleCI6MCwiaW5wdXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtlIjp0cnVlfWApOworCisgICAg
Y3VycmVudCA9IHNlZ21lbnRzLmNvbnRhaW5pbmcoNik7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiItIiwiaW5kZXgiOjYsImlucHV0IjoiQWxsb25z
LXkhIiwiaXNXb3JkTGlrZSI6ZmFsc2V9YCk7CisKKyAgICBjdXJyZW50ID0gc2VnbWVudHMuY29u
dGFpbmluZyhjdXJyZW50LmluZGV4ICsgY3VycmVudC5zZWdtZW50Lmxlbmd0aCk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoY3VycmVudCksIGB7InNlZ21lbnQiOiJ5IiwiaW5kZXgiOjcs
ImlucHV0IjoiQWxsb25zLXkhIiwiaXNXb3JkTGlrZSI6dHJ1ZX1gKTsKKworICAgIGN1cnJlbnQg
PSBzZWdtZW50cy5jb250YWluaW5nKGN1cnJlbnQuaW5kZXggKyBjdXJyZW50LnNlZ21lbnQubGVu
Z3RoKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW50KSwgYHsic2VnbWVudCI6
IiEiLCJpbmRleCI6OCwiaW5wdXQiOiJBbGxvbnMteSEiLCJpc1dvcmRMaWtlIjpmYWxzZX1gKTsK
KworICAgIGN1cnJlbnQgPSBzZWdtZW50cy5jb250YWluaW5nKGN1cnJlbnQuaW5kZXggKyBjdXJy
ZW50LnNlZ21lbnQubGVuZ3RoKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShjdXJyZW50
KSwgdW5kZWZpbmVkKTsKKyAgICAvLyDihpIgdW5kZWZpbmVkCit9Cit7CisgICAgbGV0IGlucHV0
ID0gIiI7CisKKyAgICBsZXQgc2VnbWVudGVyID0gbmV3IEludGwuU2VnbWVudGVyKCJmciIsIHtn
cmFudWxhcml0eTogIndvcmQifSk7CisgICAgbGV0IHNlZ21lbnRzID0gc2VnbWVudGVyLnNlZ21l
bnQoaW5wdXQpOworCisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFp
bmluZygwKSksIHVuZGVmaW5lZCk7CisgICAgbGV0IHJlc3VsdHMgPSBBcnJheS5mcm9tKHNlZ21l
bnRzW1N5bWJvbC5pdGVyYXRvcl0oKSk7CisgICAgc2hvdWxkQmUocmVzdWx0cy5sZW5ndGgsIDAp
OworfQoreworICAgIGxldCBpbnB1dCA9ICIgIjsKKworICAgIGxldCBzZWdtZW50ZXIgPSBuZXcg
SW50bC5TZWdtZW50ZXIoImZyIiwge2dyYW51bGFyaXR5OiAid29yZCJ9KTsKKyAgICBsZXQgc2Vn
bWVudHMgPSBzZWdtZW50ZXIuc2VnbWVudChpbnB1dCk7CisKKyAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShzZWdtZW50cy5jb250YWluaW5nKDApKSwgYHsic2VnbWVudCI6IiAiLCJpbmRleCI6
MCwiaW5wdXQiOiIgIiwiaXNXb3JkTGlrZSI6ZmFsc2V9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmluZygxKSksIHVuZGVmaW5lZCk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoc2VnbWVudHMuY29udGFpbmluZygyKSksIHVuZGVmaW5lZCk7Cisg
ICAgbGV0IHJlc3VsdHMgPSBBcnJheS5mcm9tKHNlZ21lbnRzW1N5bWJvbC5pdGVyYXRvcl0oKSk7
CisgICAgc2hvdWxkQmUocmVzdWx0cy5sZW5ndGgsIDEpOworICAgIGxldCB7c2VnbWVudCwgaW5k
ZXgsIGlzV29yZExpa2V9ID0gcmVzdWx0c1swXTsKKyAgICBzaG91bGRCZSgwLCBpbmRleCk7Cisg
ICAgc2hvdWxkQmUoMSwgaW5kZXggKyBzZWdtZW50Lmxlbmd0aCk7CisgICAgc2hvdWxkQmUoIiAi
LCBzZWdtZW50KTsKKyAgICBzaG91bGRCZShmYWxzZSwgaXNXb3JkTGlrZSk7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwKaW5kZXggMGE2OWQxZjk0YzQwNTlhMzg2NDkxNjU4ZTE1MjY2OTNkNzEyMTFkYi4uZjJh
NmNkMzJhMjc1YmY1MDAzODhmMjhlYjM0NTA1MzJjOTM2ZDc5ZiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApA
QCAtNyw2ICs3LDcgQEAgZmxhZ3M6CiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0Ns
YXNzRmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMK
ICAgSW50bC5EaXNwbGF5TmFtZXM6IHVzZUludGxEaXNwbGF5TmFtZXMKKyAgSW50bC5TZWdtZW50
ZXI6IHVzZUludGxTZWdtZW50ZXIKIHNraXA6CiAgIGZlYXR1cmVzOgogICAgIC0gU2hhcmVkQXJy
YXlCdWZmZXIKQEAgLTMwLDcgKzMxLDYgQEAgc2tpcDoKICAgICAtIEludGwuRGF0ZVRpbWVGb3Jt
YXQtZnJhY3Rpb25hbFNlY29uZERpZ2l0cwogICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAgICAgLSBJ
bnRsLk51bWJlckZvcm1hdC11bmlmaWVkCi0gICAgLSBJbnRsLlNlZ21lbnRlcgogICBwYXRoczoK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL0RhdGFWaWV3L3Byb3RvdHlwZS9nZXRCaWdJbnQ2NAogICAg
IC0gdGVzdC9idWlsdC1pbnMvRGF0YVZpZXcvcHJvdG90eXBlL2dldEJpZ1VpbnQ2NApkaWZmIC0t
Z2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0MjYy
L2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IDc5YTkzZGQ4OTRkODc3Y2NlN2E3MjgxZTFjNTJkMDk3
NDA1OTU2YWYuLjk5MWE5NGJkMzMxNWY4Nzg3NTE1NDgzOWYwNmI0YmYzNjNhMmUxZDkgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3RzL3Rl
c3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTE2NjgsNiArMTY2OCw5IEBAIHRlc3QvaW50bDQw
Mi9Mb2NhbGUvcHJvdG90eXBlL21pbmltaXplL3JlbW92aW5nLWxpa2VseS1zdWJ0YWdzLWZpcnN0
LWFkZHMtbGlrZWx5CiB0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L2NvbnN0cnVjdG9y
L2NvbnN0cnVjdG9yL2xvY2FsZXMtdmFsaWQuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogR3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBu
byBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0L2ludGw0MDIvU2VnbWVudGVyL2Nv
bnN0cnVjdG9yL2NvbnN0cnVjdG9yL2xvY2FsZXMtdmFsaWQuanM6CisgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93
biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogR3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhy
b3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2ludGw0MDIvbGFu
Z3VhZ2UtdGFncy1pbnZhbGlkLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBJbnZhbGlk
IGxhbmd1YWdlIHRhZyBuby1ueW4gd2FzIG5vdCByZWplY3RlZC4gRXhwZWN0ZWQgYSBSYW5nZUVy
cm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsIChUZXN0
aW5nIHdpdGggQ29sbGF0b3IuKScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEludmFs
aWQgbGFuZ3VhZ2UgdGFnIG5vLW55biB3YXMgbm90IHJlamVjdGVkLiBFeHBlY3RlZCBhIFJhbmdl
RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwgKFRl
c3Rpbmcgd2l0aCBDb2xsYXRvci4pJwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>