<?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>230086</bug_id>
          
          <creation_ts>2021-09-09 00:32:31 -0700</creation_ts>
          <short_desc>[JSC] Optimize op_get_property_enumerator further</short_desc>
          <delta_ts>2021-09-20 01:46:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1791798</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-09 00:32:31 -0700</bug_when>
    <thetext>[JSC] Optimize op_get_property_enumerator further</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791799</commentid>
    <comment_count>1</comment_count>
      <attachid>437718</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-09 00:35:46 -0700</bug_when>
    <thetext>Created attachment 437718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791802</commentid>
    <comment_count>2</comment_count>
      <attachid>437719</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-09 00:40:17 -0700</bug_when>
    <thetext>Created attachment 437719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791918</commentid>
    <comment_count>3</comment_count>
      <attachid>437719</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-09 09:01:54 -0700</bug_when>
    <thetext>Comment on attachment 437719
Patch

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

r=me with one bug to fix and test again

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13980
&gt; +        if ((baseValue.m_type &amp;&amp; !(baseValue.m_type &amp; ~SpecObject)) &amp;&amp; baseValue.m_structure.isFinite()) {

Nit: first two clauses can be baseValue.isType(SpecObject)

We don’t care about checking zero since zero just means we couldn’t be executing at this point anyways.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13256
&gt; +            if ((baseValue.m_type &amp;&amp; !(baseValue.m_type &amp; ~SpecObject)) &amp;&amp; baseValue.m_structure.isFinite()) {

Ditto. Can use isType

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:2816
&gt; +    genericCases.link(this);

Why not use the baseline JIT’s slow path mechanism?

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:3100
&gt; +    loadb JSCell::m_type[t0], t1

Should be m_indexingTypeAndMisc. I wonder if this just made us go slow all the time. Worth checking the rest of the fast path is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792028</commentid>
    <comment_count>4</comment_count>
      <attachid>437719</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-09 12:26:20 -0700</bug_when>
    <thetext>Comment on attachment 437719
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13980
&gt;&gt; +        if ((baseValue.m_type &amp;&amp; !(baseValue.m_type &amp; ~SpecObject)) &amp;&amp; baseValue.m_structure.isFinite()) {
&gt; 
&gt; Nit: first two clauses can be baseValue.isType(SpecObject)
&gt; 
&gt; We don’t care about checking zero since zero just means we couldn’t be executing at this point anyways.

Right! Fixed.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:13256
&gt;&gt; +            if ((baseValue.m_type &amp;&amp; !(baseValue.m_type &amp; ~SpecObject)) &amp;&amp; baseValue.m_structure.isFinite()) {
&gt; 
&gt; Ditto. Can use isType

Fixed.

&gt;&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:2816
&gt;&gt; +    genericCases.link(this);
&gt; 
&gt; Why not use the baseline JIT’s slow path mechanism?

Because this is still not slow path. It is used if indexed properties exist. We have a super fast path inlined, but this does not mean that this slowpath will not be used.

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:3100
&gt;&gt; +    loadb JSCell::m_type[t0], t1
&gt; 
&gt; Should be m_indexingTypeAndMisc. I wonder if this just made us go slow all the time. Worth checking the rest of the fast path is correct.

Oops, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792094</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-09 14:36:47 -0700</bug_when>
    <thetext>Committed r282239 (241523@main): &lt;https://commits.webkit.org/241523@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792095</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-09 14:37:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/82943743&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794998</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-20 01:46:16 -0700</bug_when>
    <thetext>*** Bug 229888 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795000</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-20 01:46:39 -0700</bug_when>
    <thetext>*** Bug 229889 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437718</attachid>
            <date>2021-09-09 00:35:46 -0700</date>
            <delta_ts>2021-09-09 00:40:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230086-20210909003545.patch</filename>
            <type>text/plain</type>
            <size>39091</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDhhOWM4ZjhhYzRmNmNkNjI3ZmFiMTc3YWU3MGQ5YzQzYzBiMDVjLi41Mzc1ZGJlYzRhMTU5YWI5
ZWNhMmNjNmQ1YTU5OWU1Mzc3NWY2ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAyMS0wOS0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yIGZ1
cnRoZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDA4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEu
IFRoaXMgcGF0Y2ggYWRkcyBmYXN0IHBhdGggb2Ygb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3Ig
dG8gTExJbnQgYW5kIEJhc2VsaW5lLiBQcmV2aW91c2x5LCB3ZSBvbmx5IGhhZCB0aGlzIGZhc3Qg
cGF0aCBpbiBERkcgYW5kIEZUTC4KKyAgICAgICAgMi4gRnJvbSB0aGUgcHJvZmlsZWQgZGF0YSwg
U3BlZWRvbWV0ZXIyL1JlYWN0LVJlZHV4LVRvZG9NVkMgaGFzIEdldFByb3BlcnR5RW51bWVyYXRv
cihDZWxsT3JPdGhlcikuIEhvd2V2ZXIsIERGRyBhbmQgRlRMIG9ubHkgb3B0aW1pemVkCisgICAg
ICAgICAgIEdldFByb3BlcnR5RW51bWVyYXRvcihDZWxsKS4gV2UgYWRkIENlbGxPck90aGVyIGFu
ZCBPdGhlciBjYXNlczogaWYgdGhlIGFyZ3VtZW50IGlzIE90aGVyLCB0aGVuIHdlIGNhbiBjb25z
dGFudCBmb2xkIGl0IHRvIHRoZQorICAgICAgICAgICBlbXB0eSBlbnVtZXJhdG9yLiBJZiB0aGUg
YXJndW1lbnQgaXMgQ2VsbE9yT3RoZXIsIHdlIGNhbiBjaGVjayBmaXJzdCwgYW5kIHJldHVybiBl
bXB0eSBlbnVtZXJhdG9yIGZvciBPdGhlciBjYXNlLgorCisgICAgICAgIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAgICAgICAgfCAgICAgICAgICAgICAgIHN1YnRlc3QgICAgICAgICAgICAgICAgfCAgICAg
bXMgICAgICB8ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBwVmFsdWUgKHNpZ25pZmljYW5jZSB1
c2luZyBGYWxzZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg
ICAgICAgIHwgRWxtLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICAgIHwxMTcuODQ2NjY3
ICAgfDExNy4xOTMzMzMgICB8MC45OTQ0NTYgIHwgMC4wMTgxMzAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWdWVKUy1Ub2RvTVZDICAgICAgICAg
ICAgICAgICAgICAgICAgfDI1LjAxODMzMyAgICB8MjQuNjI4MzMzICAgIHwwLjk4NDQxMSAgfCAw
LjA0Nzg0OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IEVtYmVySlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICB8MTI2LjI5MTY2NyAgIHwx
MjYuMDkzMzMzICAgfDAuOTk4NDMwICB8IDAuNDkxMzgxICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgQmFja2JvbmVKUy1Ub2RvTVZDICAgICAgICAg
ICAgICAgICAgIHw0OC41MzY2NjcgICAgfDQ4LjUyMzMzMyAgICB8MC45OTk3MjUgIHwgMC45MTQy
NTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBQ
cmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDE3LjQ5MzMzMyAgICB8MTcuNDU1
MDAwICAgIHwwLjk5NzgwOSAgfCAwLjg0NzI4MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IEFuZ3VsYXJKUy1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgICB8MTMwLjAwNTAwMCAgIHwxMjkuNDgwMDAwICAgfDAuOTk1OTYyICB8IDAuMTQ2MzgyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxs
YS1FUzIwMTUtVG9kb01WQyAgICAgICAgICAgICAgIHw2My41NzgzMzMgICAgfDYzLjQ3MTY2NyAg
ICB8MC45OTgzMjIgIHwgMC4zOTc5ODggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCBJbmZlcm5vLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAg
fDYzLjUyNjY2NyAgICB8NjMuNDMzMzMzICAgIHwwLjk5ODUzMSAgfCAwLjc3MjM3MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IEZsaWdodC1Ub2Rv
TVZDICAgICAgICAgICAgICAgICAgICAgICB8NzguMzE4MzMzICAgIHw3Ny45OTgzMzMgICAgfDAu
OTk1OTE0ICB8IDAuNDU2MjgwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgQW5ndWxhcjItVHlwZVNjcmlwdC1Ub2RvTVZDICAgICAgICAgIHwzOS41
MTE2NjcgICAgfDM5LjQ3ODMzMyAgICB8MC45OTkxNTYgIHwgMC45MDgxNjggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBWYW5pbGxhSlMtVG9kb01W
QyAgICAgICAgICAgICAgICAgICAgfDUxLjA0MzMzMyAgICB8NTAuODE1MDAwICAgIHwwLjk5NTUy
NyAgfCAwLjI1MDU4OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICB8IGpRdWVyeS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8MjI1LjAxODMz
MyAgIHwyMjUuNTY4MzMzICAgfDEuMDAyNDQ0ICB8IDAuMTMyMjcyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgRW1iZXJKUy1EZWJ1Zy1Ub2RvTVZD
ICAgICAgICAgICAgICAgIHwzNDAuMDY2NjY3ICAgfDMzOC42ODAwMDAgICB8MC45OTU5MjIgIHwg
MC4wMDIyMTEgKHNpZ25pZmljYW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgfCBSZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDg1LjgyNTAwMCAgICB8
ODUuNTQxNjY3ICAgIHwwLjk5NjY5OSAgfCAwLjA2Mjg0OCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFJlYWN0LVJlZHV4LVRvZG9NVkMgICAgICAg
ICAgICAgICAgICB8MTQyLjUyMzMzMyAgIHwxNDAuNTk4MzMzICAgfDAuOTg2NDkzICB8IDAuMDAw
MDAwIChzaWduaWZpY2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
VmFuaWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2RvTVZDIHw2MS42MTgzMzMgICAgfDYxLjY1
NjY2NyAgICB8MS4wMDA2MjIgIHwgMC43MjI5MTUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICBhIG1lYW4g
PSAyNjAuNzE2ODIKKyAgICAgICAgYiBtZWFuID0gMjYxLjY3MTc3CisgICAgICAgIHBWYWx1ZSA9
IDAuMDAxMzM3MzM5NAorICAgICAgICAoQmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKQorICAgICAg
ICAxLjAwNCB0aW1lcyBiZXR0ZXIKKyAgICAgICAgUmVzdWx0cyBBUkUgc2lnbmlmaWNhbnQKKwor
ICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVt
cFNwZWN1bGF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDb21wYXJl
U3RyaWN0RXEpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RTdHJ1Y3R1cmUpOgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAg
ICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToK
KyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNSYXJlRGF0YSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisKIDIwMjEtMDktMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYXRoLmh5cG90IGNoZWNrcyBmb3IgaW5maW5pdGUgdmFsdWVzIHByZW1h
dHVyZWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAppbmRleCBkODExZDkxM2M4ZmUxMmRlNmM0NzkzZDQ5M2NmNjdiMmVkMTUzOTAxLi43
ZmI3ZGIyOWFjZDlhZjc5ZmU2NjBiYmZjYWVlODEyZjE4N2NjMmNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTI1MCw2ICsy
NTAsMTEgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCiAgICAgICAgICAgICBzdHJPdXQucHJpbnQoIlN5bWJvbCIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOworCisgICAgICAgIGlmICh2
YWx1ZSAmIFNwZWNIZWFwQmlnSW50KQorICAgICAgICAgICAgc3RyT3V0LnByaW50KCJIZWFwQmln
SW50Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQog
ICAgIAogICAgIGlmICh2YWx1ZSA9PSBTcGVjSW50MzJPbmx5KQpAQCAtMjg1LDIwICsyOTAsMTEg
QEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91dFN0cmVhbSwgU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIH0KIAotICAgIGlm
ICgodmFsdWUgJiBTcGVjQmlnSW50KSA9PSBTcGVjQmlnSW50KQotICAgICAgICBzdHJPdXQucHJp
bnQoIkJpZ0ludCIpOwogI2lmIFVTRShCSUdJTlQzMikKLSAgICBlbHNlIHsKLSAgICAgICAgaWYg
KHZhbHVlICYgU3BlY0JpZ0ludDMyKQotICAgICAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQz
MiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwotCi0gICAgICAg
IGlmICh2YWx1ZSAmIFNwZWNIZWFwQmlnSW50KQotICAgICAgICAgICAgc3RyT3V0LnByaW50KCJI
ZWFwQmlnSW50Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7Ci0g
ICAgfQorICAgIGlmICh2YWx1ZSAmIFNwZWNCaWdJbnQzMikKKyAgICAgICAgc3RyT3V0LnByaW50
KCJCaWdJbnQzMiIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKICNlbmRpZgog
CiAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZUltcHVyZU5hTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDBiZWI4YmUwMTZlMjBmNjFhOWI4MDgy
MTYzYTg3MWYxNGU1MGM2ZDcuLmIyMjUzYWM4YzQwYzg3ZTA0Yzk0NDBmMGIwZmFlYTQ2YTMwOTZj
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAt
MjI3NCw2ICsyMjc0LDExIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICBjYXNlIEdldFByb3BlcnR5RW51bWVyYXRvcjogewogICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT3RoZXIoKSkgeworICAgICAgICAgICAgICAgIGluc2Vy
dENoZWNrPE90aGVyVXNlPihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgICAg
IG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9ncmFwaC5mcmVlemUodm0oKS5lbXB0
eVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbE9yT3RoZXIoKSkKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPENlbGxPck90aGVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDg3MGZmYjFlN2JiYmZmMzkwY2YxMDRjOWIyNDdhOTExOGZm
MDM4MzQuLjgyMjNkZWYzOTUzYjc2YzYxOTRjMjA0ZWI3YjQzNWMwNGM0YWJjY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMzk0
MywxNiArMTM5NDMsMjYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGNoU3RydWN0
dXJlKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm9wZXJ0
eUVudW1lcmF0b3IoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsT3JPdGhlclVzZSkgewor
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7
CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKIAotICAgICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGls
ZDEoKSk7CisKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdz
KCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOwogICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKIAogICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlz
dCBkb25lQ2FzZXM7CisKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBD
ZWxsT3JPdGhlclVzZSkgeworICAgICAgICAgICAgYXV0byBub3RPdGhlciA9IG1faml0LmJyYW5j
aElmTm90T3RoZXIoYmFzZVJlZ3MsIHNjcmF0Y2gxR1BSKTsKKyAgICAgICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgdm0oKS5lbXB0eVByb3BlcnR5
TmFtZUVudW1lcmF0b3IoKSksIHNjcmF0Y2gxR1BSKTsKKyAgICAgICAgICAgIGRvbmVDYXNlcy5h
cHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIG5vdE90aGVyLmxpbmsoJm1faml0KTsK
KyAgICAgICAgfQogCiAgICAgICAgIC8vIFdlIGdvIHRvIHRoZSBpbmxpbmVkIGZhc3QgcGF0aCBp
ZiB0aGUgb2JqZWN0IGlzIFVuZGVjaWRlZFNoYXBlIC8gTm9JbmRleGluZ1NoYXBlIGZvciBzaW1w
bGljaXR5LgogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFOb25BcnJheSk7CkBAIC0xMzk2MiwyNiAr
MTM5NzIsNTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVy
YXRvcihOb2RlKiBub2RlKQogICAgICAgICBzdGF0aWNfYXNzZXJ0KE5vbkFycmF5IDw9IEFycmF5
V2l0aFVuZGVjaWRlZCk7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoQXJyYXlDbGFzcyA8PSBBcnJh
eVdpdGhVbmRlY2lkZWQpOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KEFycmF5V2l0aFVuZGVjaWRl
ZCA8PSBBcnJheVdpdGhVbmRlY2lkZWQpOwotICAgICAgICBtX2ppdC5sb2FkOChDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjppbmRleGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkp
LCBzY3JhdGNoMUdQUik7Ci0gICAgICAgIG1faml0LmFuZDMyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEluZGV4aW5nVHlwZU1hc2spLCBzY3JhdGNoMUdQUik7Ci0gICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZSwgc2NyYXRjaDFHUFIs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFycmF5V2l0aFVuZGVjaWRlZCkpKTsKLSAgICAg
ICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgYmFzZUdQUiwgc2NyYXRjaDFHUFIsIHNj
cmF0Y2gyR1BSKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c2NyYXRjaDFHUFIsIFN0cnVjdHVyZTo6cHJldmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkpLCBzY3Jh
dGNoMUdQUik7CiAKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRy
KENDYWxsSGVscGVyczo6WmVybywgc2NyYXRjaDFHUFIpKTsKLSAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc2NyYXRjaDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odm0oKS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVj
dHVyZUlEKCkpKSkpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhzY3JhdGNoMUdQUiwgU3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlO
YW1lRW51bWVyYXRvcigpKSwgc2NyYXRjaDFHUFIpOworICAgICAgICBBYnN0cmFjdFZhbHVlJiBi
YXNlVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIG9ubHlTdHJ1Y3R1cmU7CisgICAgICAgIFN0cnVjdHVyZVJhcmVEYXRh
KiByYXJlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIGJvb2wgc2tpcEluZGV4aW5nTWFza0NoZWNr
ID0gZmFsc2U7CisgICAgICAgIGlmICgoYmFzZVZhbHVlLm1fdHlwZSAmJiAhKGJhc2VWYWx1ZS5t
X3R5cGUgJiB+U3BlY09iamVjdCkpICYmIGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgp
KSB7CisgICAgICAgICAgICBib29sIGhhc0luZGV4aW5nID0gZmFsc2U7CisgICAgICAgICAgICBi
YXNlVmFsdWUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkg
PiBBcnJheVdpdGhVbmRlY2lkZWQpCisgICAgICAgICAgICAgICAgICAgIGhhc0luZGV4aW5nID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaWYgKCFoYXNJbmRleGluZykKKyAg
ICAgICAgICAgICAgICBza2lwSW5kZXhpbmdNYXNrQ2hlY2sgPSB0cnVlOworICAgICAgICAgICAg
b25seVN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5vbmx5U3RydWN0dXJlKCk7Cisg
ICAgICAgICAgICBpZiAob25seVN0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByYXJlRGF0YSA9
IG9ubHlTdHJ1Y3R1cmUtPnRyeVJhcmVEYXRhKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IXNraXBJbmRleGluZ01hc2tDaGVjaykgeworICAgICAgICAgICAgbV9qaXQubG9hZDgoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGJhc2VSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjppbmRleGluZ1R5
cGVBbmRNaXNjT2Zmc2V0KCkpLCBzY3JhdGNoMUdQUik7CisgICAgICAgICAgICBtX2ppdC5hbmQz
MihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihJbmRleGluZ1R5cGVNYXNrKSwgc2NyYXRjaDFH
UFIpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhl
bHBlcnM6OkFib3ZlLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJy
YXlXaXRoVW5kZWNpZGVkKSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJhcmVEYXRhKSB7
CisgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuUmFyZURhdGEgPSBtX2dyYXBoLmZyZWV6
ZShyYXJlRGF0YSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZnJvemVu
UmFyZURhdGEpLCBzY3JhdGNoMUdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgU3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9m
Q2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpKSwgc2NyYXRjaDFHUFIpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKG9ubHlTdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG9ubHlTdHJ1Y3R1cmUpLCBzY3JhdGNoMUdQUik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUo
dm0oKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpOwor
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDFH
UFIsIFN0cnVjdHVyZTo6cHJldmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkpLCBzY3JhdGNoMUdQUik7
CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpaZXJvLCBzY3JhdGNoMUdQUikpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hJZlN0cnVjdHVyZShzY3JhdGNoMUdQUikpOworICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFN0cnVjdHVyZVJh
cmVEYXRhOjpvZmZzZXRPZkNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSksIHNjcmF0Y2gx
R1BSKTsKKyAgICAgICAgfQorCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
VGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gxR1BSKSk7CiAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmZs
YWdzT2Zmc2V0KCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OlZhbGlkYXRlZFZpYVdhdGNocG9pbnQpKSk7Ci0gICAgICAgIGF1dG8gZG9uZSA9
IG1faml0Lmp1bXAoKTsKKyAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwog
CiAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNpbGVudFNwaWxsQWxs
UmVnaXN0ZXJzKHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2VsbCwgc2NyYXRjaDFHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCBzY3JhdGNoMUdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAot
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAgICAgZG9uZUNhc2VzLmxpbmsoJm1faml0
KTsKICAgICAgICAgY2VsbFJlc3VsdChzY3JhdGNoMUdQUiwgbm9kZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xNDI0Miw3ICsxNDI4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVH
UFIsIFN0cnVjdHVyZTo6cHJldmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsK
IAogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKENDYWxs
SGVscGVyczo6WmVybywgc2NyYXRjaEdQUikpOwotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2bSgpLnN0cnVjdHVyZVN0cnVjdHVyZS0+c3RydWN0dXJl
SUQoKSkpKSk7CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmU3Ry
dWN0dXJlKHNjcmF0Y2hHUFIpKTsKIAogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2Fj
aGVkUHJvcGVydHlOYW1lcyhub2RlLT5vcCgpID09IE9iamVjdEtleXMgPyBDYWNoZWRQcm9wZXJ0
eU5hbWVzS2luZDo6S2V5cyA6IENhY2hlZFByb3BlcnR5TmFtZXNLaW5kOjpHZXRPd25Qcm9wZXJ0
eU5hbWVzKSksIHNjcmF0Y2hHUFIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKaW5kZXggN2JjNDhkNDA2N2M2OTk4OTI4NTAzOGMzMTI1OWNmMGVm
Y2I2MjJkZS4uOTJhODJmYjc2ZDUyZTBiZDI3NTlkMjFmOTY2YmI2N2JmNThkOWY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNzIwNyw4
ICs3MjA3LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obm90TnVsbENhc2UsIHJhcmVEYXRhQ2Fz
ZSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBt
X291dC5ub3RFcXVhbChtX291dC5sb2FkMzIocHJldmlvdXNPclJhcmVEYXRhLCBtX2hlYXBzLkpT
Q2VsbF9zdHJ1Y3R1cmVJRCksIG1fb3V0LmNvbnN0SW50MzIobV9ncmFwaC5tX3ZtLnN0cnVjdHVy
ZVN0cnVjdHVyZS0+c3RydWN0dXJlSUQoKSkpLAotICAgICAgICAgICAgICAgICAgICB1bnN1cmUo
cmFyZURhdGFDYXNlKSwgdW5zdXJlKHNsb3dDYXNlKSk7CisgICAgICAgICAgICAgICAgICAgIGlz
Q2VsbFdpdGhUeXBlKHByZXZpb3VzT3JSYXJlRGF0YSwgU3RydWN0dXJlVHlwZSwgc3RkOjpudWxs
b3B0KSwKKyAgICAgICAgICAgICAgICAgICAgdW5zdXJlKHNsb3dDYXNlKSwgdW5zdXJlKHJhcmVE
YXRhQ2FzZSkpOwogCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmFyZURhdGFDYXNl
LCB1c2VDYWNoZUNhc2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkp
ID09IDEpOwpAQCAtMTMyMjAsMTUgKzEzMjIwLDI1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgdm9pZCBjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKCkKICAgICB7CiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBDZWxsVXNlKSB7CisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlIHx8IG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxPck90aGVyVXNlKSB7
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjaGVja0V4aXN0aW5nQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3ROdWxsQ2FzZSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayByYXJlRGF0YUNhc2UgPSBtX291dC5uZXdC
bG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgdmFsaWRhdGlvbkNhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgZ2VuZXJpY0Nhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbnVsbHB0cjsK
IAotICAgICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2RlLT5j
aGlsZDEoKSk7CisKKyAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgMz4gcmVzdWx0
czsKKyAgICAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsT3JP
dGhlclVzZSkgeworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNlbGxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Io
d2Vha1BvaW50ZXIobV9ncmFwaC5tX3ZtLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcigpKSkp
OworICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc090aGVyKGJhc2UsIHByb3ZlblR5cGUo
bV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGNlbGxDYXNl
KSk7CisgICAgICAgICAgICAgICAgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhjZWxsQ2FzZSwg
Y2hlY2tFeGlzdGluZ0Nhc2UpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBXZSBn
byB0byB0aGUgaW5saW5lZCBmYXN0IHBhdGggaWYgdGhlIG9iamVjdCBpcyBVbmRlY2lkZWRTaGFw
ZSAvIE5vSW5kZXhpbmdTaGFwZSBmb3Igc2ltcGxpY2l0eS4KICAgICAgICAgICAgIHN0YXRpY19h
c3NlcnQoIU5vbkFycmF5KTsKQEAgLTEzMjM4LDMzICsxMzI0OCw3MSBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICAgICAgc3RhdGljX2Fzc2VydChOb25BcnJheSA8PSBBcnJheVdpdGhV
bmRlY2lkZWQpOwogICAgICAgICAgICAgc3RhdGljX2Fzc2VydChBcnJheUNsYXNzIDw9IEFycmF5
V2l0aFVuZGVjaWRlZCk7CiAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KEFycmF5V2l0aFVuZGVj
aWRlZCA8PSBBcnJheVdpdGhVbmRlY2lkZWQpOwotICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5n
VHlwZSA9IG1fb3V0LmJpdEFuZChtX291dC5sb2FkOFplcm9FeHQzMihjZWxsLCBtX2hlYXBzLkpT
Q2VsbF9pbmRleGluZ1R5cGVBbmRNaXNjKSwgbV9vdXQuY29uc3RJbnQzMihJbmRleGluZ1R5cGVN
YXNrKSk7Ci0gICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuYmVsb3dPckVxdWFsKGluZGV4
aW5nVHlwZSwgbV9vdXQuY29uc3RJbnQzMihBcnJheVdpdGhVbmRlY2lkZWQpKSwgdW5zdXJlKGNo
ZWNrRXhpc3RpbmdDYXNlKSwgdW5zdXJlKGdlbmVyaWNDYXNlKSk7CiAKLSAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oY2hlY2tFeGlzdGluZ0Nhc2UsIG5v
dE51bGxDYXNlKTsKLSAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJl
KGNlbGwpOwotICAgICAgICAgICAgTFZhbHVlIHByZXZpb3VzT3JSYXJlRGF0YSA9IG1fb3V0Lmxv
YWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEpOwor
ICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBvbmx5U3Ry
dWN0dXJlOworICAgICAgICAgICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIGJvb2wgc2tpcEluZGV4aW5nTWFza0NoZWNrID0gZmFsc2U7CisgICAg
ICAgICAgICBpZiAoKGJhc2VWYWx1ZS5tX3R5cGUgJiYgIShiYXNlVmFsdWUubV90eXBlICYgflNw
ZWNPYmplY3QpKSAmJiBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgICAg
ICAgICAgICAgIGJvb2wgaGFzSW5kZXhpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBiYXNl
VmFsdWUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
ID4gQXJyYXlXaXRoVW5kZWNpZGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgaGFzSW5kZXhp
bmcgPSB0cnVlOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGlmICghaGFz
SW5kZXhpbmcpCisgICAgICAgICAgICAgICAgICAgIHNraXBJbmRleGluZ01hc2tDaGVjayA9IHRy
dWU7CisgICAgICAgICAgICAgICAgb25seVN0cnVjdHVyZSA9IGJhc2VWYWx1ZS5tX3N0cnVjdHVy
ZS5vbmx5U3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgaWYgKG9ubHlTdHJ1Y3R1cmUpCisg
ICAgICAgICAgICAgICAgICAgIHJhcmVEYXRhID0gb25seVN0cnVjdHVyZS0+dHJ5UmFyZURhdGEo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTFZhbHVlIG5vdEhhdmluZ0luZGV4aW5n
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChza2lwSW5kZXhpbmdNYXNrQ2hlY2spCisgICAg
ICAgICAgICAgICAgbm90SGF2aW5nSW5kZXhpbmcgPSBtX291dC5ib29sZWFuVHJ1ZTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIExWYWx1ZSBpbmRleGluZ1R5cGUgPSBtX291
dC5iaXRBbmQobV9vdXQubG9hZDhaZXJvRXh0MzIoYmFzZSwgbV9oZWFwcy5KU0NlbGxfaW5kZXhp
bmdUeXBlQW5kTWlzYyksIG1fb3V0LmNvbnN0SW50MzIoSW5kZXhpbmdUeXBlTWFzaykpOworICAg
ICAgICAgICAgICAgIG5vdEhhdmluZ0luZGV4aW5nID0gbV9vdXQuYmVsb3dPckVxdWFsKGluZGV4
aW5nVHlwZSwgbV9vdXQuY29uc3RJbnQzMihBcnJheVdpdGhVbmRlY2lkZWQpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChub3RIYXZpbmdJbmRleGluZywgdW5zdXJl
KGNoZWNrRXhpc3RpbmdDYXNlKSwgdW5zdXJlKGdlbmVyaWNDYXNlKSk7CisKKyAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0Q2FuZGlkYXRlID0gbV9vdXQuYXBwZW5kVG8oY2hlY2tFeGlz
dGluZ0Nhc2UsIG5vdE51bGxDYXNlKTsKKyAgICAgICAgICAgIGlmICghbGFzdE5leHQpCisgICAg
ICAgICAgICAgICAgbGFzdE5leHQgPSBsYXN0TmV4dENhbmRpZGF0ZTsKKyAgICAgICAgICAgIExW
YWx1ZSBwcmV2aW91c09yUmFyZURhdGEgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKHJhcmVE
YXRhKQorICAgICAgICAgICAgICAgIHByZXZpb3VzT3JSYXJlRGF0YSA9IHdlYWtQb2ludGVyKHJh
cmVEYXRhKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIExWYWx1ZSBzdHJ1
Y3R1cmUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIGlmIChvbmx5U3RydWN0dXJlKQorICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSB3ZWFrU3RydWN0dXJlKG9ubHlTdHJ1Y3R1cmUp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlID0g
bG9hZFN0cnVjdHVyZShiYXNlKTsKKyAgICAgICAgICAgICAgICBwcmV2aW91c09yUmFyZURhdGEg
PSBtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfcHJldmlvdXNPclJh
cmVEYXRhKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5u
b3ROdWxsKHByZXZpb3VzT3JSYXJlRGF0YSksIHVuc3VyZShub3ROdWxsQ2FzZSksIHVuc3VyZShn
ZW5lcmljQ2FzZSkpOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3ROdWxsQ2FzZSwg
cmFyZURhdGFDYXNlKTsKLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAg
ICBtX291dC5ub3RFcXVhbChtX291dC5sb2FkMzIocHJldmlvdXNPclJhcmVEYXRhLCBtX2hlYXBz
LkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIG1fb3V0LmNvbnN0SW50MzIobV9ncmFwaC5tX3ZtLnN0cnVj
dHVyZVN0cnVjdHVyZS0+c3RydWN0dXJlSUQoKSkpLAotICAgICAgICAgICAgICAgIHVuc3VyZShy
YXJlRGF0YUNhc2UpLCB1bnN1cmUoZ2VuZXJpY0Nhc2UpKTsKKyAgICAgICAgICAgIExWYWx1ZSBp
c1JhcmVEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChyYXJlRGF0YSkKKyAgICAgICAg
ICAgICAgICBpc1JhcmVEYXRhID0gbV9vdXQuYm9vbGVhblRydWU7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgaXNSYXJlRGF0YSA9IG1fb3V0LmxvZ2ljYWxOb3QoaXNDZWxsV2l0
aFR5cGUocHJldmlvdXNPclJhcmVEYXRhLCBTdHJ1Y3R1cmVUeXBlLCBzdGQ6Om51bGxvcHQpKTsK
KyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc1JhcmVEYXRhLCB1bnN1cmUocmFyZURhdGFDYXNl
KSwgdW5zdXJlKGdlbmVyaWNDYXNlKSk7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJh
cmVEYXRhQ2FzZSwgdmFsaWRhdGlvbkNhc2UpOwogICAgICAgICAgICAgTFZhbHVlIGNhY2hlZCA9
IG1fb3V0LmxvYWRQdHIocHJldmlvdXNPclJhcmVEYXRhLCBtX2hlYXBzLlN0cnVjdHVyZVJhcmVE
YXRhX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IpOwogICAgICAgICAgICAgbV9vdXQuYnJh
bmNoKG1fb3V0Lm5vdE51bGwoY2FjaGVkKSwgdW5zdXJlKHZhbGlkYXRpb25DYXNlKSwgdW5zdXJl
KGdlbmVyaWNDYXNlKSk7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHZhbGlkYXRpb25D
YXNlLCBnZW5lcmljQ2FzZSk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKGNhY2hlZCk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291
dC5hbmNob3IoY2FjaGVkKSk7CiAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQudGVzdE5v
blplcm8zMihtX291dC5sb2FkMzIoY2FjaGVkLCBtX2hlYXBzLkpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcl9mbGFncyksIG1fb3V0LmNvbnN0SW50MzIoSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpW
YWxpZGF0ZWRWaWFXYXRjaHBvaW50KSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoZ2Vu
ZXJpY0Nhc2UpKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZ2VuZXJpY0Nhc2UsIGNv
bnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBnZW5lcmljUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25HZXRQcm9wZXJ0eUVu
dW1lcmF0b3JDZWxsLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBjZWxsKSk7CisgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9w
ZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvckNlbGwsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCksIGJhc2UpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgZ2Vu
ZXJpY1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5
cGUoKSwgcmVzdWx0cykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3Is
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDFh
MzA1NDE4NDdjMmRiZDgxZDFmZWI4OGEzNmI2MjM5NDMzNDEyZTQuLmZhZDcxNDYyN2JkZjViMGIz
NzJiNTBjZmU0YzZlNjg3NjJhNjM4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaApAQCAtOTM0LDYgKzkzNCw4IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVy
cyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgSnVtcCBicmFuY2hJZk5vdEhlYXBCaWdJ
bnQoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBIZWFw
QmlnSW50VHlwZSk7IH0KICAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIp
IHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KICAgICBK
dW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElm
Tm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmU3Ry
dWN0dXJlKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3Ry
dWN0dXJlVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90U3RydWN0dXJlKEdQUlJlZyBjZWxs
R1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3RydWN0dXJlVHlwZSk7IH0K
ICAgICAKICAgICB2b2lkIGlzRW1wdHkoR1BSUmVnIGdwciwgR1BSUmVnIGRzdCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggM2EzN2JlZTIzZWUzZTViZWU2NWNmZTI3MDc0
OWVhMGU1YWE2ZjYwMi4uODk5NjUzNTQwYjg4ODMzMjFiMTg2OWY2MjRmYTU5MzM0OGE0MGViMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzA4LDcgKzMwOCw2IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AobmV3X2Fy
cmF5X3dpdGhfc3ByZWFkKQogICAgICAgICBERUZJTkVfU0xPV19PUChuZXdfYXJyYXlfYnVmZmVy
KQogICAgICAgICBERUZJTkVfU0xPV19PUChzcHJlYWQpCi0gICAgICAgIERFRklORV9TTE9XX09Q
KGdldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVf
ZGlyZWN0X2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX3Njb3BlZF9h
cmd1bWVudHMpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9jbG9uZWRfYXJndW1lbnRz
KQpAQCAtMzYyLDYgKzM2MSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklO
RV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3Zh
bCkKKyAgICAgICAgREVGSU5FX09QKG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZW51bWVyYXRvcl9uZXh0KQogICAgICAgICBERUZJTkVfT1Aob3BfZW51
bWVyYXRvcl9nZXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZW51bWVyYXRvcl9pbl9i
eV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBmMWVjY2NlYTY0YzA0NGNkYjZjNzQ4
ZjA5MjcxYjBkNTQ5MmU2ZDY2Li4yM2E5ZjU4NGI0ZTg0MzQzOGQxMWY3N2EyZjIwYmU4MTg1YWRj
YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU0NSw2ICs1NDUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bjb2RlVHlwZT4KICAgICAgICAg
dm9pZCBnZW5lcmF0ZUdldEJ5VmFsU2xvd0Nhc2UoY29uc3QgT3Bjb2RlVHlwZSYsIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKIAorICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3By
b3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2VudW1lcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfZW51bWVyYXRvcl9nZXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAxNWM1NWU3YTE3Mjk3YTg2
YWQ5MDJiMDM0MjRjOWI4M2JmYzQ1MzdmLi5hZjc0YTc0NWFjYTM3NmMyYWM2NzVmMjYyMzFkNDRl
OGE1ZDU3ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcApAQCAtMjc4Niw2ICsyNzg2LDQwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9p
bnRlcm5hbF9maWVsZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB0
ZW1wbGF0ZSB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWw+KGNvbnN0IElu
c3RydWN0aW9uKik7CiAKK3ZvaWQgSklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9y
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRQcm9wZXJ0eUVudW1lcmF0b3I+KCk7
CisKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisKKyAgICBKdW1wTGlzdCBkb25lQ2Fz
ZXM7CisgICAgSnVtcExpc3QgZ2VuZXJpY0Nhc2VzOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCByZWdUMCk7CisgICAgZ2VuZXJpY0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdENl
bGwocmVnVDApKTsKKyAgICBsb2FkOChBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmluZGV4aW5nVHlw
ZUFuZE1pc2NPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhp
bmdUeXBlTWFzayksIHJlZ1QxKTsKKyAgICBnZW5lcmljQ2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFi
b3ZlLCByZWdUMSwgVHJ1c3RlZEltbTMyKEFycmF5V2l0aFVuZGVjaWRlZCkpKTsKKworICAgIGVt
aXRMb2FkU3RydWN0dXJlKHZtKCksIHJlZ1QwLCByZWdUMSwgcmVnVDIpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjpwcmV2aW91c09yUmFyZURhdGFPZmZzZXQoKSksIHJl
Z1QxKTsKKyAgICBnZW5lcmljQ2FzZXMuYXBwZW5kKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDEp
KTsKKyAgICBnZW5lcmljQ2FzZXMuYXBwZW5kKGJyYW5jaElmU3RydWN0dXJlKHJlZ1QxKSk7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNo
ZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpLCByZWdUMSk7CisKKyAgICBnZW5lcmljQ2FzZXMu
YXBwZW5kKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDEpKTsKKyAgICBnZW5lcmljQ2FzZXMuYXBw
ZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBBZGRyZXNzKHJlZ1QxLCBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OmZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOjpWYWxpZGF0ZWRWaWFXYXRjaHBvaW50KSkpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCByZWdUMSk7CisgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOworCisgICAgZ2Vu
ZXJpY0Nhc2VzLmxpbmsodGhpcyk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRv
cik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKworICAgIGRvbmVDYXNlcy5saW5rKHRoaXMp
OworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEVudW1lcmF0b3JOZXh0PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggMmViNDdmZDM0
OGJkYWE5NzQwMGYyNGM0N2U0YjA3OTdhYzdiYTAzNC4uY2I1NzNmZDY1NDlmY2Y4ZjEzMmEwMDIz
ZjY0MWQ0MDY4NmUyYTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0xMzg1LDYgKzEzODUsMTIgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAKIHRlbXBsYXRlIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWw8T3BQ
dXRCeVZhbD4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKIAordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3By
b3BlcnR5X2VudW1lcmF0b3IoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKTsKKyAgICBzbG93UGF0aENh
bGwuY2FsbCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2VudW1lcmF0
b3JfbmV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KaW5kZXggYmFmMGM4OWI1MjU5MjRjMzIxNzMwM2EwN2IwYmMzNTg1YTk1
OWRjZS4uMjk5MzZkYTlhMWRlZWFjODk3Nzk3ZWU2MWMzZGQ5ZGJlYzIzYTgwYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpA
QCAtNTI1LDYgKzUyNSw3IEBAIGNvbnN0IFBheWxvYWRPZmZzZXQgPSBjb25zdGV4cHIgUGF5bG9h
ZE9mZnNldAogIyBDb25zdGFudCBmb3IgcmVhc29uaW5nIGFib3V0IGJ1dHRlcmZsaWVzLgogY29u
c3QgSXNBcnJheSAgICAgICAgICAgICAgICAgID0gY29uc3RleHByIElzQXJyYXkKIGNvbnN0IElu
ZGV4aW5nU2hhcGVNYXNrICAgICAgICA9IGNvbnN0ZXhwciBJbmRleGluZ1NoYXBlTWFzaworY29u
c3QgSW5kZXhpbmdUeXBlTWFzayAgICAgICAgID0gY29uc3RleHByIEluZGV4aW5nVHlwZU1hc2sK
IGNvbnN0IE5vSW5kZXhpbmdTaGFwZSAgICAgICAgICA9IGNvbnN0ZXhwciBOb0luZGV4aW5nU2hh
cGUKIGNvbnN0IEludDMyU2hhcGUgICAgICAgICAgICAgICA9IGNvbnN0ZXhwciBJbnQzMlNoYXBl
CiBjb25zdCBEb3VibGVTaGFwZSAgICAgICAgICAgICAgPSBjb25zdGV4cHIgRG91YmxlU2hhcGUK
QEAgLTUzMiw4ICs1MzMsMTAgQEAgY29uc3QgQ29udGlndW91c1NoYXBlICAgICAgICAgID0gY29u
c3RleHByIENvbnRpZ3VvdXNTaGFwZQogY29uc3QgQXJyYXlTdG9yYWdlU2hhcGUgICAgICAgID0g
Y29uc3RleHByIEFycmF5U3RvcmFnZVNoYXBlCiBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hh
cGUgPSBjb25zdGV4cHIgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlCiBjb25zdCBDb3B5T25Xcml0
ZSAgICAgICAgICAgICAgPSBjb25zdGV4cHIgQ29weU9uV3JpdGUKK2NvbnN0IEFycmF5V2l0aFVu
ZGVjaWRlZCAgICAgICA9IGNvbnN0ZXhwciBBcnJheVdpdGhVbmRlY2lkZWQKIAogIyBUeXBlIGNv
bnN0YW50cy4KK2NvbnN0IFN0cnVjdHVyZVR5cGUgPSBjb25zdGV4cHIgU3RydWN0dXJlVHlwZQog
Y29uc3QgU3RyaW5nVHlwZSA9IGNvbnN0ZXhwciBTdHJpbmdUeXBlCiBjb25zdCBTeW1ib2xUeXBl
ID0gY29uc3RleHByIFN5bWJvbFR5cGUKIGNvbnN0IE9iamVjdFR5cGUgPSBjb25zdGV4cHIgT2Jq
ZWN0VHlwZQpAQCAtMjA1MSw3ICsyMDU0LDYgQEAgc2xvd1BhdGhPcChjcmVhdGVfYXN5bmNfZ2Vu
ZXJhdG9yKQogc2xvd1BhdGhPcChkZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpCiBzbG93UGF0aE9w
KGRlZmluZV9kYXRhX3Byb3BlcnR5KQogc2xvd1BhdGhPcChnZXRfYnlfdmFsX3dpdGhfdGhpcykK
LXNsb3dQYXRoT3AoZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpCiAKIGlmIG5vdCBKU1ZBTFVFNjQK
ICAgICBzbG93UGF0aE9wKGdldF9wcm90b3R5cGVfb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGI4
YTBmMjA1NDM5MTRiYmQ2YWI1ZDgzMjEwYWQzNzU3OTMwMzM0OTcuLjc4NTI0Y2ZmMTk2OThkYzgw
MDU4NmJhOTRhYzQyMjdiMThjM2YzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0zMDc5LDYgKzMw
NzksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3NldF9wcml2YXRlX2JyYW5kLCBPcFNldFBy
aXZhdGVCcmFuZCwgbWFjcm8gKHNpemUsIGdldCwgZAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAor
c2xvd1BhdGhPcChnZXRfcHJvcGVydHlfZW51bWVyYXRvcikKIHNsb3dQYXRoT3AoZW51bWVyYXRv
cl9uZXh0KQogc2xvd1BhdGhPcChlbnVtZXJhdG9yX2dldF9ieV92YWwpCiBzbG93UGF0aE9wKGVu
dW1lcmF0b3JfaW5fYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBjN2QxYTIwNDgwOTMyOGRiMDQxMzk3
NWQ1Yjg3OTYyMGE1MzE3ZjBkLi41OWY3NjRjNTczNWZlMjdlZDAwYWRmNDkyZTVkNmI2MDI5YTE4
NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMzA5Myw2ICszMDkzLDMwIEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCitsbGludE9wV2l0aFJldHVybihvcF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvciwgT3BHZXRQcm9wZXJ0eUVudW1lcmF0b3IsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgZ2V0KG1fYmFzZSwgdDEpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDEsIHQwLCAuc2xvd1BhdGgpCisKKyAgICBsb2Fk
YiBKU0NlbGw6Om1fdHlwZVt0MF0sIHQxCisgICAgYW5kaSBJbmRleGluZ1R5cGVNYXNrLCB0MQor
ICAgIGJpYSB0MSwgQXJyYXlXaXRoVW5kZWNpZGVkLCAuc2xvd1BhdGgKKworICAgIGxvYWRTdHJ1
Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDEsIHQyLCB0MykKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1f
cHJldmlvdXNPclJhcmVEYXRhW3QxXSwgdDEKKyAgICBidHB6IHQxLCAuc2xvd1BhdGgKKyAgICBi
YmVxIEpTQ2VsbDo6bV90eXBlW3QxXSwgU3RydWN0dXJlVHlwZSwgLnNsb3dQYXRoCisKKyAgICBs
b2FkcCBTdHJ1Y3R1cmVSYXJlRGF0YTo6bV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yW3Qx
XSwgdDEKKyAgICBidHB6IHQxLCAuc2xvd1BhdGgKKyAgICBidGl6IEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcjo6bV9mbGFnc1t0MV0sIChjb25zdGV4cHIgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
OjpWYWxpZGF0ZWRWaWFXYXRjaHBvaW50KSwgLnNsb3dQYXRoCisKKyAgICByZXR1cm4odDEpCisK
Ky5zbG93UGF0aDoKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51
bWVyYXRvcikKKyAgICBkaXNwYXRjaCgpCitlbmQpCisKIGxsaW50T3Aob3BfZW51bWVyYXRvcl9u
ZXh0LCBPcEVudW1lcmF0b3JOZXh0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKICAgICAj
IE5vdGU6IHRoaXMgd2lsbCBhbHdheXMgY2FsbCB0aGUgc2xvdyBwYXRoIG9uIGF0IGxlYXN0IHRo
ZSBmaXJzdC9sYXN0IGV4ZWN1dGlvbiBvZiBFbnVtZXJhdG9yTmV4dCBmb3IgYW55IGdpdmVuIGxv
b3AuCiAgICAgIyBUaGUgdXBzaWRlIHRoaXMgaXMgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHJlY29y
ZCBhbnkgbWV0YWRhdGEgb3IgbW9kZSBpbmZvcm1hdGlvbiBoZXJlIGFzIHRoZSBzbG93IHBhdGgg
d2lsbCBkbyBpdCBmb3IgdXMgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gSW5pdE1vZGUvSW5kZXhl
ZE1vZGUgdG8gT3duU3RydWN0dXJlTW9kZSwgb3IgZnJvbSBPd25TdHJ1Y3R1cmVNb2RlIHRvIEdl
bmVyaWNNb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXgg
MTYxM2M2NTNlZjI4ZjE4MGMwZjg1MzJmMjRlNjA0ZmI0NWY2ZDBmMS4uNWE4YTE0YTNjYzZhZDE5
ZWQ0MDgyNGI4MzAyZGI5MGM0YzQ3NGMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuY3BwCkBAIC0zOSw2ICszOSw3IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IENBU0UoQ2VsbFR5cGUpCisgICAgQ0FTRShTdHJ1Y3R1cmVUeXBlKQogICAgIENBU0UoU3RyaW5n
VHlwZSkKICAgICBDQVNFKFN5bWJvbFR5cGUpCiAgICAgQ0FTRShIZWFwQmlnSW50VHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggZGU2NzMwMWJjMTU3NTBhMTQx
NTI3NDc3NDgzZGUzN2ZlYTAxNjRhYi4uNjVlYTk0ZWY1NjNmNGIzYWUyMTkxNzUxYzc5MmVjNTEw
ZDU3NDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTI1LDYg
KzI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIC8v
IFRoZSBDZWxsVHlwZSB2YWx1ZSBtdXN0IGNvbWUgYmVmb3JlIGFueSBKU1R5cGUgdGhhdCBpcyBh
IEpTQ2VsbC4KICAgICBDZWxsVHlwZSwKKyAgICBTdHJ1Y3R1cmVUeXBlLAogICAgIFN0cmluZ1R5
cGUsCiAgICAgSGVhcEJpZ0ludFR5cGUsCiAgICAgTGFzdE1heWJlRmFsc3lDZWxsUHJpbWl0aXZl
ID0gSGVhcEJpZ0ludFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAppbmRleCA0OWFjNzQ1ZDY1Y2ZlNDNlNGQ3YTJhNTE0ODkyZjQ4NWRmMDBkNTdlLi45
MGQ4ZTcyZjA0ZDU4MGMxZWQxYzQxMjg2ODZjMjc5MmVlYTQ2ODFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlLCBjbwogCiBjb25zdCBDbGFzc0luZm8gU3RydWN0dXJlOjpzX2luZm8g
PSB7ICJTdHJ1Y3R1cmUiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFN0cnVjdHVyZSkgfTsKIAotU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtKQorU3Ry
dWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKICAgICA6IEpT
Q2VsbChDcmVhdGluZ0Vhcmx5Q2VsbCkKICAgICAsIG1faW5saW5lQ2FwYWNpdHkoMCkKICAgICAs
IG1fYml0RmllbGQoMCkKQEAgLTI2Myw3ICsyNjMsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShW
TSYgdm0pCiAgICAgc2V0VHJhbnNpdGlvbk9mZnNldCh2bSwgaW52YWxpZE9mZnNldCk7CiAgICAg
c2V0TWF4T2Zmc2V0KHZtLCBpbnZhbGlkT2Zmc2V0KTsKICAKLSAgICBUeXBlSW5mbyB0eXBlSW5m
byA9IFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyk7CisgICAgVHlwZUluZm8gdHlw
ZUluZm8gPSBUeXBlSW5mbyhTdHJ1Y3R1cmVUeXBlLCBTdHJ1Y3R1cmVGbGFncyk7CiAgICAgbV9i
bG9iID0gU3RydWN0dXJlSURCbG9iKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRl
SUQodGhpcyksIDAsIHR5cGVJbmZvKTsKICAgICBtX291dE9mTGluZVR5cGVGbGFncyA9IHR5cGVJ
bmZvLm91dE9mTGluZVR5cGVGbGFncygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCmluZGV4IDlmMjdjYmEwMWVkMjU2MGU0NTI1ZGNlMjBlOTRmYjA0MmRjMWVl
YzYuLjE1N2NkMWQ3YjljY2IxMDk1YWI3MmE4ZWVjZjkxMTliMDcwOTFmZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC03NDIsNyArNzQyLDcgQEAgY2xh
c3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3Qg
Q2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSk7Ci0gICAg
U3RydWN0dXJlKFZNJik7CisgICAgU3RydWN0dXJlKFZNJiwgQ3JlYXRpbmdFYXJseUNlbGxUYWcp
OwogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJy
ZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgCkBA
IC04MzgsNyArODM4LDcgQEAgY2xhc3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
CiAgICAgYm9vbCBpc1JhcmVEYXRhKEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBjZWxsICYmIGNlbGwtPnN0cnVjdHVyZUlEKCkgIT0gc3RydWN0dXJlSUQoKTsKKyAg
ICAgICAgcmV0dXJuIGNlbGwgJiYgY2VsbC0+dHlwZSgpICE9IFN0cnVjdHVyZVR5cGU7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV0YWlsc0Z1bmM+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggM2VjZDgzMzk1NTBi
YTFlYThkZmU4NGFiZDk0YTlhNDcyMjlhYjlmYi4uYmRjYmM5YjczODlmZTk2YTgwMjAyMzdiMTM2
NjExNzM0OTc4N2FlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaApAQCAtNjgsNyArNjgsNyBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dQogaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQog
ewogICAgIEFTU0VSVCghdm0uc3RydWN0dXJlU3RydWN0dXJlKTsKLSAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4odm0uaGVhcCkp
IFN0cnVjdHVyZSh2bSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0sIENyZWF0aW5n
RWFybHlDZWxsKTsKICAgICBzdHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKHZtLCBDcmVhdGluZ0Vh
cmx5Q2VsbCk7CiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCmluZGV4IGYwN2QyY2JmYzM1NWRm
MzkzNzgyMjc1MGRkYmNkYmY3ODJhYTY3NWYuLjc3YzAzM2E2OWZlNTRjMGVhODI1Mjk4YmE5OWZh
NmVkMTk3NDBlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlUmFyZURhdGEuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIGNsYXNzIFN0cnVjdHVyZTsKIGNsYXNzIFN0cnVjdHVyZUNoYWluOwogY2xhc3MgQ2FjaGVk
U3BlY2lhbFByb3BlcnR5QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OwpAQCAtMTE5LDYgKzEy
MCw3IEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgdm9pZCBpbnZhbGlkYXRlV2F0Y2hwb2ludEJhc2VkVmFsaWRhdGlvbigpOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJpZW5kIGNs
YXNzIFN0cnVjdHVyZTsKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkU3BlY2lhbFByb3BlcnR5QWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OwogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRTcGVjaWFs
UHJvcGVydHlBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMDJmMTg5N2IwZjM5MTg1NjBiNTA1MzE5ZDZl
NDYxYmRiNWQ3MTBkZC4uZjFjNmRmODU0YzQwZjY2OTk0YjhiZWU0N2I4NjJmZDE5YzZiNDJkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDg1LDYgKzQ4NSw3IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwgV1RGOjpSdW5Mb29wKiBydW5M
b29wLCBib29sKiBzdWNjZXNzKQogICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkgewogICAgICAg
ICBzZW50aW5lbE1hcEJ1Y2tldCgpOwogICAgICAgICBzZW50aW5lbFNldEJ1Y2tldCgpOworICAg
ICAgICBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKTsKICAgICB9CiAgICAgewogICAgICAg
ICBhdXRvKiBiaWdJbnQgPSBKU0JpZ0ludDo6dHJ5Q3JlYXRlRnJvbSgqdGhpcywgMSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFlMDUw
NDE4YjUxZjhlOWE3MDcxMGQwZGExMGEwMjY3ZTk3N2E3MjUuLmY5ZDM2NWYwMzhjNDc1Y2ViNmU4
M2U5YjVmYjhkMGNjOThiYTQxODEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDktMDkgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBvcF9n
ZXRfcHJvcGVydHlfZW51bWVyYXRvciBmdXJ0aGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9mb3ItaW4tY2VsbC1vdGhlci5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChmb3JJbik6CisgICAgICAgICogc3Ry
ZXNzL2Zvci1pbi1udWxsLXVuZGVmaW5lZC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChmb3JJbik6CisKIDIwMjEtMDktMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYXRoLmh5cG90IGNoZWNrcyBmb3IgaW5maW5pdGUgdmFs
dWVzIHByZW1hdHVyZWx5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tY2VsbC1v
dGhlci5qcyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1jZWxsLW90aGVyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI3OWZmN2Y2YjJhYTc4Y2U3NWE0ZmZjMjkxZjA0OGVmOGMzZTI3MDYKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tY2VsbC1vdGhlci5qcwpAQCAtMCwwICsxLDIyIEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKworZnVuY3Rpb24gZm9ySW4ob2JqZWN0KQoreworICAgIHZhciBpdGVyYXRpb24g
PSAwOworICAgIGZvciAodmFyIGkgaW4gb2JqZWN0KQorICAgICAgICArK2l0ZXJhdGlvbjsKKyAg
ICByZXR1cm4gaXRlcmF0aW9uOworfQorbm9JbmxpbmUoZm9ySW4pOworCit2YXIgb2JqZWN0ID0g
eyBpOiA0MiwgaTI6IDQzLCBpMzogNDQgfTsKK3ZhciBvYmplY3QyID0geyBpOiA0MiwgaTI6IDQz
LCBpMzogNDQsIGk0OjQ1IH07Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAg
c2hvdWxkQmUoZm9ySW4obnVsbCksIDApOworICAgIHNob3VsZEJlKGZvckluKG9iamVjdCksIDMp
OworICAgIHNob3VsZEJlKGZvckluKHVuZGVmaW5lZCksIDApOworICAgIHNob3VsZEJlKGZvcklu
KG9iamVjdDIpLCA0KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1udWxs
LXVuZGVmaW5lZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1udWxsLXVuZGVmaW5lZC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMzViMWZjZTE2NzA2ZDZkMTJlZTQzMTU3YTI4MTkyYTc4OTg3MjM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLWluLW51bGwtdW5kZWZpbmVkLmpzCkBA
IC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQg
dmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBmb3JJbihvYmplY3QpCit7CisgICAg
dmFyIGl0ZXJhdGlvbiA9IDA7CisgICAgZm9yICh2YXIgaSBpbiBvYmplY3QpCisgICAgICAgICsr
aXRlcmF0aW9uOworICAgIHJldHVybiBpdGVyYXRpb247Cit9Citub0lubGluZShmb3JJbik7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICBzaG91bGRCZShmb3JJbihudWxs
KSwgMCk7CisgICAgc2hvdWxkQmUoZm9ySW4odW5kZWZpbmVkKSwgMCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437719</attachid>
            <date>2021-09-09 00:40:17 -0700</date>
            <delta_ts>2021-09-09 09:01:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230086-20210909004016.patch</filename>
            <type>text/plain</type>
            <size>40862</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDhhOWM4ZjhhYzRmNmNkNjI3ZmFiMTc3YWU3MGQ5YzQzYzBiMDVjLi4zMGNiMTFhMTJjOTgyMGM3
OTQyMWEyZmM1YjMzNTIwYjNlNjdlZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAyMS0wOS0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIG9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yIGZ1
cnRoZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDA4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEu
IFRoaXMgcGF0Y2ggYWRkcyBmYXN0IHBhdGggb2Ygb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3Ig
dG8gTExJbnQgYW5kIEJhc2VsaW5lLiBQcmV2aW91c2x5LCB3ZSBvbmx5IGhhZCB0aGlzIGZhc3Qg
cGF0aCBpbiBERkcgYW5kIEZUTC4KKyAgICAgICAgMi4gRnJvbSB0aGUgcHJvZmlsZWQgZGF0YSwg
U3BlZWRvbWV0ZXIyL1JlYWN0LVJlZHV4LVRvZG9NVkMgaGFzIEdldFByb3BlcnR5RW51bWVyYXRv
cihDZWxsT3JPdGhlcikuIEhvd2V2ZXIsIERGRyBhbmQgRlRMIG9ubHkgb3B0aW1pemVkCisgICAg
ICAgICAgIEdldFByb3BlcnR5RW51bWVyYXRvcihDZWxsKS4gV2UgYWRkIENlbGxPck90aGVyIGFu
ZCBPdGhlciBjYXNlczogaWYgdGhlIGFyZ3VtZW50IGlzIE90aGVyLCB0aGVuIHdlIGNhbiBjb25z
dGFudCBmb2xkIGl0IHRvIHRoZQorICAgICAgICAgICBlbXB0eSBlbnVtZXJhdG9yLiBJZiB0aGUg
YXJndW1lbnQgaXMgQ2VsbE9yT3RoZXIsIHdlIGNhbiBjaGVjayBmaXJzdCwgYW5kIHJldHVybiBl
bXB0eSBlbnVtZXJhdG9yIGZvciBPdGhlciBjYXNlLgorICAgICAgICAzLiBUaGlzIHBhdGNoIGFs
c28gY2xlYW5zIHVwIFN0cnVjdHVyZVJhcmVEYXRhIGxvb2t1cCBieSBpbnRyb2R1Y2luZyBTdHJ1
Y3R1cmVUeXBlIHRvIEpTVHlwZS4KKworICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg
IHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAgICAgfCAg
ICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcgRmFsc2Ug
RGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICB8IEVs
bS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTE3Ljg0NjY2NyAgIHwxMTcuMTkz
MzMzICAgfDAuOTk0NDU2ICB8IDAuMDE4MTMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgVnVlSlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICAg
ICAgIHwyNS4wMTgzMzMgICAgfDI0LjYyODMzMyAgICB8MC45ODQ0MTEgIHwgMC4wNDc4NDggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBFbWJlckpT
LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEyNi4yOTE2NjcgICB8MTI2LjA5MzMzMyAg
IHwwLjk5ODQzMCAgfCAwLjQ5MTM4MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICB8IEJhY2tib25lSlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICB8
NDguNTM2NjY3ICAgIHw0OC41MjMzMzMgICAgfDAuOTk5NzI1ICB8IDAuOTE0MjU1ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUHJlYWN0LVRvZG9N
VkMgICAgICAgICAgICAgICAgICAgICAgIHwxNy40OTMzMzMgICAgfDE3LjQ1NTAwMCAgICB8MC45
OTc4MDkgIHwgMC44NDcyODIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgfCBBbmd1bGFySlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgfDEzMC4w
MDUwMDAgICB8MTI5LjQ4MDAwMCAgIHwwLjk5NTk2MiAgfCAwLjE0NjM4MiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEtRVMyMDE1LVRv
ZG9NVkMgICAgICAgICAgICAgICB8NjMuNTc4MzMzICAgIHw2My40NzE2NjcgICAgfDAuOTk4MzIy
ICB8IDAuMzk3OTg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgSW5mZXJuby1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2My41MjY2Njcg
ICAgfDYzLjQzMzMzMyAgICB8MC45OTg1MzEgIHwgMC43NzIzNzIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBGbGlnaHQtVG9kb01WQyAgICAgICAg
ICAgICAgICAgICAgICAgfDc4LjMxODMzMyAgICB8NzcuOTk4MzMzICAgIHwwLjk5NTkxNCAgfCAw
LjQ1NjI4MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICB8IEFuZ3VsYXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8MzkuNTExNjY3ICAgIHwz
OS40NzgzMzMgICAgfDAuOTk5MTU2ICB8IDAuOTA4MTY4ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAgICAg
ICAgICAgICAgIHw1MS4wNDMzMzMgICAgfDUwLjgxNTAwMCAgICB8MC45OTU1MjcgIHwgMC4yNTA1
ODkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfCBq
UXVlcnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIyNS4wMTgzMzMgICB8MjI1LjU2
ODMzMyAgIHwxLjAwMjQ0NCAgfCAwLjEzMjI3MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAgICAg
ICAgICB8MzQwLjA2NjY2NyAgIHwzMzguNjgwMDAwICAgfDAuOTk1OTIyICB8IDAuMDAyMjExIChz
aWduaWZpY2FudCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgUmVhY3Qt
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw4NS44MjUwMDAgICAgfDg1LjU0MTY2NyAg
ICB8MC45OTY2OTkgIHwgMC4wNjI4NDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAgICAgICAgICAg
fDE0Mi41MjMzMzMgICB8MTQwLjU5ODMzMyAgIHwwLjk4NjQ5MyAgfCAwLjAwMDAwMCAoc2lnbmlm
aWNhbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8IFZhbmlsbGEtRVMy
MDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjEuNjE4MzMzICAgIHw2MS42NTY2NjcgICAgfDEu
MDAwNjIyICB8IDAuNzIyOTE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgYSBtZWFuID0gMjYwLjcxNjgy
CisgICAgICAgIGIgbWVhbiA9IDI2MS42NzE3NworICAgICAgICBwVmFsdWUgPSAwLjAwMTMzNzMz
OTQKKyAgICAgICAgKEJpZ2dlciBtZWFucyBhcmUgYmV0dGVyLikKKyAgICAgICAgMS4wMDQgdGlt
ZXMgYmV0dGVyCisgICAgICAgIFJlc3VsdHMgQVJFIHNpZ25pZmljYW50CisKKyAgICAgICAgKiBi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHA6CisgICAgICAgIChKU0M6OmR1bXBTcGVjdWxhdGlv
bik6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3Bl
cnR5RW51bWVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToK
KyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5
SGVscGVyczo6YnJhbmNoSWZTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmJyYW5jaElmTm90U3RydWN0dXJlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRp
bWUvQnJhbmRlZFN0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OkJyYW5kZWRTdHJ1Y3R1cmU6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAgICAoV1RGOjpw
cmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc1JhcmVEYXRhKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjppc1JhcmVEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
Y3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorCiAyMDIxLTA5LTA3ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgTWF0aC5oeXBvdCBjaGVja3MgZm9yIGlu
ZmluaXRlIHZhbHVlcyBwcmVtYXR1cmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKaW5kZXggZDgxMWQ5MTNjOGZlMTJkZTZjNDc5M2Q0
OTNjZjY3YjJlZDE1MzkwMS4uN2ZiN2RiMjlhY2Q5YWY3OWZlNjYwYmJmY2FlZTgxMmYxODdjYzJj
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwCkBAIC0yNTAsNiArMjUwLDExIEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3Ry
ZWFtJiBvdXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgICAgICAgICAgc3RyT3V0
LnByaW50KCJTeW1ib2wiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKKworICAgICAgICBpZiAodmFsdWUgJiBTcGVjSGVhcEJpZ0ludCkKKyAgICAgICAgICAgIHN0
ck91dC5wcmludCgiSGVhcEJpZ0ludCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpc1Rv
cCA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICBpZiAodmFsdWUgPT0gU3BlY0ludDMyT25seSkK
QEAgLTI4NSwyMCArMjkwLDExIEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBv
dXRTdHJlYW0sIFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogICAgICAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZiAoKHZhbHVlICYgU3BlY0JpZ0ludCkgPT0gU3BlY0JpZ0ludCkK
LSAgICAgICAgc3RyT3V0LnByaW50KCJCaWdJbnQiKTsKICNpZiBVU0UoQklHSU5UMzIpCi0gICAg
ZWxzZSB7Ci0gICAgICAgIGlmICh2YWx1ZSAmIFNwZWNCaWdJbnQzMikKLSAgICAgICAgICAgIHN0
ck91dC5wcmludCgiQmlnSW50MzIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaXNUb3Ag
PSBmYWxzZTsKLQotICAgICAgICBpZiAodmFsdWUgJiBTcGVjSGVhcEJpZ0ludCkKLSAgICAgICAg
ICAgIHN0ck91dC5wcmludCgiSGVhcEJpZ0ludCIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBpc1RvcCA9IGZhbHNlOwotICAgIH0KKyAgICBpZiAodmFsdWUgJiBTcGVjQmlnSW50MzIpCisg
ICAgICAgIHN0ck91dC5wcmludCgiQmlnSW50MzIiKTsKKyAgICBlbHNlCisgICAgICAgIGlzVG9w
ID0gZmFsc2U7CiAjZW5kaWYKIAogICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVJbXB1cmVOYU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAwYmVi
OGJlMDE2ZTIwZjYxYTliODA4MjE2M2E4NzFmMTRlNTBjNmQ3Li5iMjI1M2FjOGM0MGM4N2UwNGM5
NDQwZjBiMGZhZWE0NmEzMDk2YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKQEAgLTIyNzQsNiArMjI3NCwxMSBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRQcm9wZXJ0eUVudW1lcmF0b3I6IHsKICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU90aGVyKCkpIHsKKyAg
ICAgICAgICAgICAgICBpbnNlcnRDaGVjazxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgp
KTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3Jh
cGguZnJlZXplKHZtKCkuZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpKTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGxPck90aGVy
KCkpCisgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsT3JPdGhlclVzZT4obm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA4NzBmZmIxZTdiYmJmZjM5
MGNmMTA0YzliMjQ3YTkxMThmZjAzODM0Li44MjIzZGVmMzk1M2I3NmM2MTk0YzIwNGViN2I0MzVj
MDRjNGFiY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMTM5NDMsMTYgKzEzOTQzLDI2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVNYXRjaFN0cnVjdHVyZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7Ci0gICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
Q2VsbE9yT3RoZXJVc2UpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gxKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7
CiAKLSAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBzcGVjdWxh
dGUobm9kZSwgbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdz
ID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3Jh
dGNoMS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7
CiAKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgICAgIEND
YWxsSGVscGVyczo6SnVtcExpc3QgZG9uZUNhc2VzOworCisgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbE9yT3RoZXJVc2UpIHsKKyAgICAgICAgICAgIGF1dG8gbm90
T3RoZXIgPSBtX2ppdC5icmFuY2hJZk5vdE90aGVyKGJhc2VSZWdzLCBzY3JhdGNoMUdQUik7Cisg
ICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IHZtKCkuZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpLCBzY3JhdGNoMUdQUik7CisgICAg
ICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBub3RP
dGhlci5saW5rKCZtX2ppdCk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBXZSBnbyB0byB0aGUg
aW5saW5lZCBmYXN0IHBhdGggaWYgdGhlIG9iamVjdCBpcyBVbmRlY2lkZWRTaGFwZSAvIE5vSW5k
ZXhpbmdTaGFwZSBmb3Igc2ltcGxpY2l0eS4KICAgICAgICAgc3RhdGljX2Fzc2VydCghTm9uQXJy
YXkpOwpAQCAtMTM5NjIsMjYgKzEzOTcyLDU2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRQcm9wZXJ0eUVudW1lcmF0b3IoTm9kZSogbm9kZSkKICAgICAgICAgc3RhdGljX2Fzc2Vy
dChOb25BcnJheSA8PSBBcnJheVdpdGhVbmRlY2lkZWQpOwogICAgICAgICBzdGF0aWNfYXNzZXJ0
KEFycmF5Q2xhc3MgPD0gQXJyYXlXaXRoVW5kZWNpZGVkKTsKICAgICAgICAgc3RhdGljX2Fzc2Vy
dChBcnJheVdpdGhVbmRlY2lkZWQgPD0gQXJyYXlXaXRoVW5kZWNpZGVkKTsKLSAgICAgICAgbV9q
aXQubG9hZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6aW5kZXhpbmdU
eXBlQW5kTWlzY09mZnNldCgpKSwgc2NyYXRjaDFHUFIpOwotICAgICAgICBtX2ppdC5hbmQzMihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihJbmRleGluZ1R5cGVNYXNrKSwgc2NyYXRjaDFHUFIp
OwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6
QWJvdmUsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihBcnJheVdpdGhV
bmRlY2lkZWQpKSk7Ci0gICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGJhc2VH
UFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUik7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBTdHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJl
RGF0YU9mZnNldCgpKSwgc2NyYXRjaDFHUFIpOwogCi0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gxR1BSKSk7Ci0g
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVh
bCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoYml0d2lzZV9jYXN0PGludDMyX3Q+KHZtKCkuc3RydWN0
dXJlU3RydWN0dXJlLT5zdHJ1Y3R1cmVJRCgpKSkpKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZz
ZXRPZkNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSksIHNjcmF0Y2gxR1BSKTsKKyAgICAg
ICAgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBvbmx5U3RydWN0dXJlOworICAgICAg
ICBTdHJ1Y3R1cmVSYXJlRGF0YSogcmFyZURhdGEgPSBudWxscHRyOworICAgICAgICBib29sIHNr
aXBJbmRleGluZ01hc2tDaGVjayA9IGZhbHNlOworICAgICAgICBpZiAoKGJhc2VWYWx1ZS5tX3R5
cGUgJiYgIShiYXNlVmFsdWUubV90eXBlICYgflNwZWNPYmplY3QpKSAmJiBiYXNlVmFsdWUubV9z
dHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgICAgICAgICAgYm9vbCBoYXNJbmRleGluZyA9IGZh
bHNlOworICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdIChSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1
cmUtPmluZGV4aW5nVHlwZSgpID4gQXJyYXlXaXRoVW5kZWNpZGVkKQorICAgICAgICAgICAgICAg
ICAgICBoYXNJbmRleGluZyA9IHRydWU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGlm
ICghaGFzSW5kZXhpbmcpCisgICAgICAgICAgICAgICAgc2tpcEluZGV4aW5nTWFza0NoZWNrID0g
dHJ1ZTsKKyAgICAgICAgICAgIG9ubHlTdHJ1Y3R1cmUgPSBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUu
b25seVN0cnVjdHVyZSgpOworICAgICAgICAgICAgaWYgKG9ubHlTdHJ1Y3R1cmUpCisgICAgICAg
ICAgICAgICAgcmFyZURhdGEgPSBvbmx5U3RydWN0dXJlLT50cnlSYXJlRGF0YSgpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFza2lwSW5kZXhpbmdNYXNrQ2hlY2spIHsKKyAgICAgICAgICAg
IG1faml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlUmVncy5wYXlsb2FkR1BSKCks
IEpTQ2VsbDo6aW5kZXhpbmdUeXBlQW5kTWlzY09mZnNldCgpKSwgc2NyYXRjaDFHUFIpOworICAg
ICAgICAgICAgbV9qaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSW5kZXhpbmdU
eXBlTWFzayksIHNjcmF0Y2gxR1BSKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZSwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKEFycmF5V2l0aFVuZGVjaWRlZCkpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChyYXJlRGF0YSkgeworICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plblJhcmVE
YXRhID0gbV9ncmFwaC5mcmVlemUocmFyZURhdGEpOworICAgICAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyKGZyb3plblJhcmVEYXRhKSwgc2NyYXRjaDFHUFIpOworICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFN0cnVjdHVy
ZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSksIHNjcmF0
Y2gxR1BSKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChvbmx5U3RydWN0dXJl
KQorICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihvbmx5U3RydWN0dXJl
KSwgc2NyYXRjaDFHUFIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1faml0
LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaDFH
UFIsIHNjcmF0Y2gyR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBTdHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNl
dCgpKSwgc2NyYXRjaDFHUFIpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgc2NyYXRjaDFHUFIpKTsKKyAgICAgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZTdHJ1Y3R1cmUoc2NyYXRjaDFHUFIp
KTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0
Y2gxR1BSLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKCkpLCBzY3JhdGNoMUdQUik7CisgICAgICAgIH0KKwogICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNoMUdQ
UikpOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhl
bHBlcnM6Olplcm8sIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yOjpmbGFnc09mZnNldCgpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpWYWxpZGF0ZWRWaWFXYXRjaHBvaW50KSkpOwot
ICAgICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIGRvbmVDYXNlcy5hcHBl
bmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBzbG93Q2FzZXMubGluaygmbV9qaXQpOwogICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvckNlbGws
IHNjcmF0Y2gxR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUik7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2VsbCwgc2Ny
YXRjaDFHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncy5wYXlsb2FkR1BS
KCkpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKLSAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgICAgIGRv
bmVDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNlbGxSZXN1bHQoc2NyYXRjaDFHUFIsIG5v
ZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQyNDIsNyArMTQyODIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lcyhOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnByZXZpb3VzT3JSYXJlRGF0YU9mZnNl
dCgpKSwgc2NyYXRjaEdQUik7CiAKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2hHUFIpKTsKLSAgICAgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odm0oKS5zdHJ1Y3R1cmVT
dHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkpKSkpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hJZlN0cnVjdHVyZShzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZVJh
cmVEYXRhOjpvZmZzZXRPZkNhY2hlZFByb3BlcnR5TmFtZXMobm9kZS0+b3AoKSA9PSBPYmplY3RL
ZXlzID8gQ2FjaGVkUHJvcGVydHlOYW1lc0tpbmQ6OktleXMgOiBDYWNoZWRQcm9wZXJ0eU5hbWVz
S2luZDo6R2V0T3duUHJvcGVydHlOYW1lcykpLCBzY3JhdGNoR1BSKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDdiYzQ4ZDQwNjdjNjk5
ODkyODUwMzhjMzEyNTljZjBlZmNiNjIyZGUuLjkyYTgyZmI3NmQ1MmUwYmQyNzU5ZDIxZjk2NmJi
NjdiZjU4ZDlmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKQEAgLTcyMDcsOCArNzIwNyw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5vdE51
bGxDYXNlLCByYXJlRGF0YUNhc2UpOwogICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAg
ICAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwobV9vdXQubG9hZDMyKHByZXZpb3VzT3JS
YXJlRGF0YSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLCBtX291dC5jb25zdEludDMyKG1f
Z3JhcGgubV92bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkpKSwKLSAgICAgICAg
ICAgICAgICAgICAgdW5zdXJlKHJhcmVEYXRhQ2FzZSksIHVuc3VyZShzbG93Q2FzZSkpOworICAg
ICAgICAgICAgICAgICAgICBpc0NlbGxXaXRoVHlwZShwcmV2aW91c09yUmFyZURhdGEsIFN0cnVj
dHVyZVR5cGUsIHN0ZDo6bnVsbG9wdCksCisgICAgICAgICAgICAgICAgICAgIHVuc3VyZShzbG93
Q2FzZSksIHVuc3VyZShyYXJlRGF0YUNhc2UpKTsKIAogICAgICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKHJhcmVEYXRhQ2FzZSwgdXNlQ2FjaGVDYXNlKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3Bl
cnR5TmFtZXNTZW50aW5lbCgpKSA9PSAxKTsKQEAgLTEzMjIwLDE1ICsxMzIyMCwyNSBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcigp
CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBpZiAobV9ub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgeworICAgICAgICBpZiAobV9ub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBDZWxsT3JPdGhlclVzZSkgewogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2hlY2tFeGlzdGlu
Z0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVs
bENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgcmFyZURh
dGFDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHZhbGlk
YXRpb25DYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGdl
bmVyaWNDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG51bGxwdHI7CiAKLSAgICAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAg
c3BlY3VsYXRlKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgICAgICBWZWN0b3I8VmFsdWVG
cm9tQmxvY2ssIDM+IHJlc3VsdHM7CisgICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbE9yT3RoZXJVc2UpIHsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBjZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQobV9vdXQuYW5jaG9yKHdlYWtQb2ludGVyKG1fZ3JhcGgubV92bS5lbXB0eVByb3BlcnR5
TmFtZUVudW1lcmF0b3IoKSkpKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2goaXNPdGhl
cihiYXNlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNvbnRpbnVhdGlv
biksIHVuc3VyZShjZWxsQ2FzZSkpOworICAgICAgICAgICAgICAgIGxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8oY2VsbENhc2UsIGNoZWNrRXhpc3RpbmdDYXNlKTsKKyAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gV2UgZ28gdG8gdGhlIGlubGluZWQgZmFzdCBwYXRoIGlmIHRoZSBvYmpl
Y3QgaXMgVW5kZWNpZGVkU2hhcGUgLyBOb0luZGV4aW5nU2hhcGUgZm9yIHNpbXBsaWNpdHkuCiAg
ICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KCFOb25BcnJheSk7CkBAIC0xMzIzOCwzMyArMTMyNDgs
NzEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoTm9u
QXJyYXkgPD0gQXJyYXlXaXRoVW5kZWNpZGVkKTsKICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQo
QXJyYXlDbGFzcyA8PSBBcnJheVdpdGhVbmRlY2lkZWQpOwogICAgICAgICAgICAgc3RhdGljX2Fz
c2VydChBcnJheVdpdGhVbmRlY2lkZWQgPD0gQXJyYXlXaXRoVW5kZWNpZGVkKTsKLSAgICAgICAg
ICAgIExWYWx1ZSBpbmRleGluZ1R5cGUgPSBtX291dC5iaXRBbmQobV9vdXQubG9hZDhaZXJvRXh0
MzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfaW5kZXhpbmdUeXBlQW5kTWlzYyksIG1fb3V0LmNvbnN0
SW50MzIoSW5kZXhpbmdUeXBlTWFzaykpOwotICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0
LmJlbG93T3JFcXVhbChpbmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoQXJyYXlXaXRoVW5k
ZWNpZGVkKSksIHVuc3VyZShjaGVja0V4aXN0aW5nQ2FzZSksIHVuc3VyZShnZW5lcmljQ2FzZSkp
OwogCi0gICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGNo
ZWNrRXhpc3RpbmdDYXNlLCBub3ROdWxsQ2FzZSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3RydWN0
dXJlID0gbG9hZFN0cnVjdHVyZShjZWxsKTsKLSAgICAgICAgICAgIExWYWx1ZSBwcmV2aW91c09y
UmFyZURhdGEgPSBtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfcHJl
dmlvdXNPclJhcmVEYXRhKTsKKyAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1ZSA9
IG1fc3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgb25seVN0cnVjdHVyZTsKKyAgICAgICAgICAgIFN0cnVjdHVyZVJhcmVEYXRh
KiByYXJlRGF0YSA9IG51bGxwdHI7CisgICAgICAgICAgICBib29sIHNraXBJbmRleGluZ01hc2tD
aGVjayA9IGZhbHNlOworICAgICAgICAgICAgaWYgKChiYXNlVmFsdWUubV90eXBlICYmICEoYmFz
ZVZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgJiYgYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlz
RmluaXRlKCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGhhc0luZGV4aW5nID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdIChSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSA+IEFycmF5V2l0aFVuZGVjaWRlZCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGhhc0luZGV4aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWhhc0luZGV4aW5nKQorICAgICAgICAgICAgICAgICAgICBza2lwSW5k
ZXhpbmdNYXNrQ2hlY2sgPSB0cnVlOworICAgICAgICAgICAgICAgIG9ubHlTdHJ1Y3R1cmUgPSBi
YXNlVmFsdWUubV9zdHJ1Y3R1cmUub25seVN0cnVjdHVyZSgpOworICAgICAgICAgICAgICAgIGlm
IChvbmx5U3RydWN0dXJlKQorICAgICAgICAgICAgICAgICAgICByYXJlRGF0YSA9IG9ubHlTdHJ1
Y3R1cmUtPnRyeVJhcmVEYXRhKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIExWYWx1
ZSBub3RIYXZpbmdJbmRleGluZyA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAoc2tpcEluZGV4
aW5nTWFza0NoZWNrKQorICAgICAgICAgICAgICAgIG5vdEhhdmluZ0luZGV4aW5nID0gbV9vdXQu
Ym9vbGVhblRydWU7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBMVmFsdWUg
aW5kZXhpbmdUeXBlID0gbV9vdXQuYml0QW5kKG1fb3V0LmxvYWQ4WmVyb0V4dDMyKGJhc2UsIG1f
aGVhcHMuSlNDZWxsX2luZGV4aW5nVHlwZUFuZE1pc2MpLCBtX291dC5jb25zdEludDMyKEluZGV4
aW5nVHlwZU1hc2spKTsKKyAgICAgICAgICAgICAgICBub3RIYXZpbmdJbmRleGluZyA9IG1fb3V0
LmJlbG93T3JFcXVhbChpbmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoQXJyYXlXaXRoVW5k
ZWNpZGVkKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX291dC5icmFuY2gobm90SGF2
aW5nSW5kZXhpbmcsIHVuc3VyZShjaGVja0V4aXN0aW5nQ2FzZSksIHVuc3VyZShnZW5lcmljQ2Fz
ZSkpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dENhbmRpZGF0ZSA9IG1fb3V0
LmFwcGVuZFRvKGNoZWNrRXhpc3RpbmdDYXNlLCBub3ROdWxsQ2FzZSk7CisgICAgICAgICAgICBp
ZiAoIWxhc3ROZXh0KQorICAgICAgICAgICAgICAgIGxhc3ROZXh0ID0gbGFzdE5leHRDYW5kaWRh
dGU7CisgICAgICAgICAgICBMVmFsdWUgcHJldmlvdXNPclJhcmVEYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIGlmIChyYXJlRGF0YSkKKyAgICAgICAgICAgICAgICBwcmV2aW91c09yUmFyZURh
dGEgPSB3ZWFrUG9pbnRlcihyYXJlRGF0YSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpZiAo
b25seVN0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlID0gd2Vha1N0cnVj
dHVyZShvbmx5U3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUoYmFzZSk7CisgICAgICAgICAgICAgICAg
cHJldmlvdXNPclJhcmVEYXRhID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3Ry
dWN0dXJlX3ByZXZpb3VzT3JSYXJlRGF0YSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
X291dC5icmFuY2gobV9vdXQubm90TnVsbChwcmV2aW91c09yUmFyZURhdGEpLCB1bnN1cmUobm90
TnVsbENhc2UpLCB1bnN1cmUoZ2VuZXJpY0Nhc2UpKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obm90TnVsbENhc2UsIHJhcmVEYXRhQ2FzZSk7Ci0gICAgICAgICAgICBtX291dC5icmFu
Y2goCi0gICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwobV9vdXQubG9hZDMyKHByZXZpb3Vz
T3JSYXJlRGF0YSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLCBtX291dC5jb25zdEludDMy
KG1fZ3JhcGgubV92bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkpKSwKLSAgICAg
ICAgICAgICAgICB1bnN1cmUocmFyZURhdGFDYXNlKSwgdW5zdXJlKGdlbmVyaWNDYXNlKSk7Cisg
ICAgICAgICAgICBMVmFsdWUgaXNSYXJlRGF0YSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAo
cmFyZURhdGEpCisgICAgICAgICAgICAgICAgaXNSYXJlRGF0YSA9IG1fb3V0LmJvb2xlYW5UcnVl
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlzUmFyZURhdGEgPSBtX291dC5s
b2dpY2FsTm90KGlzQ2VsbFdpdGhUeXBlKHByZXZpb3VzT3JSYXJlRGF0YSwgU3RydWN0dXJlVHlw
ZSwgc3RkOjpudWxsb3B0KSk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNSYXJlRGF0YSwg
dW5zdXJlKHJhcmVEYXRhQ2FzZSksIHVuc3VyZShnZW5lcmljQ2FzZSkpOwogCiAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhyYXJlRGF0YUNhc2UsIHZhbGlkYXRpb25DYXNlKTsKICAgICAgICAg
ICAgIExWYWx1ZSBjYWNoZWQgPSBtX291dC5sb2FkUHRyKHByZXZpb3VzT3JSYXJlRGF0YSwgbV9o
ZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTsKICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKGNhY2hlZCksIHVuc3VyZSh2YWxp
ZGF0aW9uQ2FzZSksIHVuc3VyZShnZW5lcmljQ2FzZSkpOwogCiAgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyh2YWxpZGF0aW9uQ2FzZSwgZ2VuZXJpY0Nhc2UpOwotICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWNoZWQpOworICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGNhY2hlZCkpOwogICAgICAgICAgICAgbV9vdXQu
YnJhbmNoKG1fb3V0LnRlc3ROb25aZXJvMzIobV9vdXQubG9hZDMyKGNhY2hlZCwgbV9oZWFwcy5K
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3JfZmxhZ3MpLCBtX291dC5jb25zdEludDMyKEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6VmFsaWRhdGVkVmlhV2F0Y2hwb2ludCkpLCB1bnN1cmUoY29udGlu
dWF0aW9uKSwgdW5zdXJlKGdlbmVyaWNDYXNlKSk7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGdlbmVyaWNDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgZ2VuZXJpY1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2VsbCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgY2VsbCkpOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2Fs
bChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCB3ZWFr
UG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIGZhc3RSZXN1bHQsIGdlbmVyaWNSZXN1bHQpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUo
bV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIHJlc3VsdHMpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uR2V0
UHJvcGVydHlFbnVtZXJhdG9yLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAppbmRleCAxYTMwNTQxODQ3YzJkYmQ4MWQxZmViODhhMzZiNjIzOTQzMzQxMmU0
Li5mYWQ3MTQ2MjdiZGY1YjBiMzcyYjUwY2ZlNGM2ZTY4NzYyYTYzODljIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTkzNCw2ICs5MzQsOCBAQCBj
bGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIEp1bXAg
YnJhbmNoSWZOb3RIZWFwQmlnSW50KEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5v
dFR5cGUoY2VsbEdQUiwgSGVhcEJpZ0ludFR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZkZ1bmN0
aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgSlNGdW5j
dGlvblR5cGUpOyB9CiAgICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BS
KSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5cGUpOyB9Cisg
ICAgSnVtcCBicmFuY2hJZlN0cnVjdHVyZShHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNo
SWZUeXBlKGNlbGxHUFIsIFN0cnVjdHVyZVR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZk5vdFN0
cnVjdHVyZShHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIs
IFN0cnVjdHVyZVR5cGUpOyB9CiAgICAgCiAgICAgdm9pZCBpc0VtcHR5KEdQUlJlZyBncHIsIEdQ
UlJlZyBkc3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDNhMzdiZWUy
M2VlM2U1YmVlNjVjZmUyNzA3NDllYTBlNWFhNmY2MDIuLjg5OTY1MzU0MGI4ODgzMzIxYjE4Njlm
NjI0ZmE1OTMzNDhhNDBlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMwOCw3
ICszMDgsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERF
RklORV9TTE9XX09QKG5ld19hcnJheV93aXRoX3NwcmVhZCkKICAgICAgICAgREVGSU5FX1NMT1df
T1AobmV3X2FycmF5X2J1ZmZlcikKICAgICAgICAgREVGSU5FX1NMT1dfT1Aoc3ByZWFkKQotICAg
ICAgICBERUZJTkVfU0xPV19PUChnZXRfcHJvcGVydHlfZW51bWVyYXRvcikKICAgICAgICAgREVG
SU5FX1NMT1dfT1AoY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9TTE9X
X09QKGNyZWF0ZV9zY29wZWRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVh
dGVfY2xvbmVkX2FyZ3VtZW50cykKQEAgLTM2Miw2ICszNjEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRfd2l0aF90
aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkKICAgICAgICAgREVG
SU5FX09QKG9wX2dldF9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcikKICAgICAgICAgREVGSU5FX09QKG9wX2VudW1lcmF0b3JfbmV4dCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09Q
KG9wX2VudW1lcmF0b3JfaW5fYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZjFl
Y2NjZWE2NGMwNDRjZGI2Yzc0OGYwOTI3MWIwZDU0OTJlNmQ2Ni4uMjNhOWY1ODRiNGU4NDM0Mzhk
MTFmNzdhMmYyMGJlODE4NWFkY2EzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01NDUs
NiArNTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
Y29kZVR5cGU+CiAgICAgICAgIHZvaWQgZ2VuZXJhdGVHZXRCeVZhbFNsb3dDYXNlKGNvbnN0IE9w
Y29kZVR5cGUmLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAKKyAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2VudW1lcmF0b3JfZ2V0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5k
ZXggMTVjNTVlN2ExNzI5N2E4NmFkOTAyYjAzNDI0YzliODNiZmM0NTM3Zi4uYWY3NGE3NDVhY2Ez
NzZjMmFjNjc1ZjI2MjMxZDQ0ZThhNWQ1NzgzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI3ODYsNiArMjc4Niw0MCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIAogdGVtcGxhdGUgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbDxP
cFB1dEJ5VmFsPihjb25zdCBJbnN0cnVjdGlvbiopOwogCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cHJvcGVydHlfZW51bWVyYXRvcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0UHJv
cGVydHlFbnVtZXJhdG9yPigpOworCisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29k
ZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworCisg
ICAgSnVtcExpc3QgZG9uZUNhc2VzOworICAgIEp1bXBMaXN0IGdlbmVyaWNDYXNlczsKKworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAgIGdlbmVyaWNDYXNlcy5h
cHBlbmQoYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKSk7CisgICAgbG9hZDgoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjppbmRleGluZ1R5cGVBbmRNaXNjT2Zmc2V0KCkpLCByZWdUMSk7CisgICAgYW5kMzIo
VHJ1c3RlZEltbTMyKEluZGV4aW5nVHlwZU1hc2spLCByZWdUMSk7CisgICAgZ2VuZXJpY0Nhc2Vz
LmFwcGVuZChicmFuY2gzMihBYm92ZSwgcmVnVDEsIFRydXN0ZWRJbW0zMihBcnJheVdpdGhVbmRl
Y2lkZWQpKSk7CisKKyAgICBlbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCByZWdUMCwgcmVnVDEsIHJl
Z1QyKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6cHJldmlvdXNPclJh
cmVEYXRhT2Zmc2V0KCkpLCByZWdUMSk7CisgICAgZ2VuZXJpY0Nhc2VzLmFwcGVuZChicmFuY2hU
ZXN0UHRyKFplcm8sIHJlZ1QxKSk7CisgICAgZ2VuZXJpY0Nhc2VzLmFwcGVuZChicmFuY2hJZlN0
cnVjdHVyZShyZWdUMSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlUmFy
ZURhdGE6Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpKSwgcmVnVDEpOwor
CisgICAgZ2VuZXJpY0Nhc2VzLmFwcGVuZChicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QxKSk7Cisg
ICAgZ2VuZXJpY0Nhc2VzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgQWRkcmVzcyhyZWdUMSwg
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpmbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6VmFsaWRhdGVkVmlhV2F0Y2hwb2ludCkpKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDEpOworICAgIGRvbmVDYXNlcy5hcHBlbmQo
anVtcCgpKTsKKworICAgIGdlbmVyaWNDYXNlcy5saW5rKHRoaXMpOworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZ2V0
X3Byb3BlcnR5X2VudW1lcmF0b3IpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisKKyAgICBk
b25lQ2FzZXMubGluayh0aGlzKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9u
ZXh0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BFbnVtZXJhdG9yTmV4dD4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCmluZGV4IDJlYjQ3ZmQzNDhiZGFhOTc0MDBmMjRjNDdlNGIwNzk3YWM3YmEwMzQuLmNiNTcz
ZmQ2NTQ5ZmNmOGYxMzJhMDAyM2Y2NDFkNDA2ODZlMmEyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTM4NSw2
ICsxMzg1LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiB0ZW1wbGF0ZSB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWw+KGNvbnN0IEluc3RydWN0aW9uKik7CiAKK3ZvaWQg
SklUOjplbWl0X29wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRv
cik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfZW51
bWVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF9lbnVtZXJhdG9yX25leHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGJhZjBjODliNTI1OTI0YzMy
MTczMDNhMDdiMGJjMzU4NWE5NTlkY2UuLjI5OTM2ZGE5YTFkZWVhYzg5Nzc5N2VlNjFjM2RkOWRi
ZWMyM2E4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KQEAgLTUyNSw2ICs1MjUsNyBAQCBjb25zdCBQYXlsb2FkT2Zmc2V0
ID0gY29uc3RleHByIFBheWxvYWRPZmZzZXQKICMgQ29uc3RhbnQgZm9yIHJlYXNvbmluZyBhYm91
dCBidXR0ZXJmbGllcy4KIGNvbnN0IElzQXJyYXkgICAgICAgICAgICAgICAgICA9IGNvbnN0ZXhw
ciBJc0FycmF5CiBjb25zdCBJbmRleGluZ1NoYXBlTWFzayAgICAgICAgPSBjb25zdGV4cHIgSW5k
ZXhpbmdTaGFwZU1hc2sKK2NvbnN0IEluZGV4aW5nVHlwZU1hc2sgICAgICAgICA9IGNvbnN0ZXhw
ciBJbmRleGluZ1R5cGVNYXNrCiBjb25zdCBOb0luZGV4aW5nU2hhcGUgICAgICAgICAgPSBjb25z
dGV4cHIgTm9JbmRleGluZ1NoYXBlCiBjb25zdCBJbnQzMlNoYXBlICAgICAgICAgICAgICAgPSBj
b25zdGV4cHIgSW50MzJTaGFwZQogY29uc3QgRG91YmxlU2hhcGUgICAgICAgICAgICAgID0gY29u
c3RleHByIERvdWJsZVNoYXBlCkBAIC01MzIsOCArNTMzLDEwIEBAIGNvbnN0IENvbnRpZ3VvdXNT
aGFwZSAgICAgICAgICA9IGNvbnN0ZXhwciBDb250aWd1b3VzU2hhcGUKIGNvbnN0IEFycmF5U3Rv
cmFnZVNoYXBlICAgICAgICA9IGNvbnN0ZXhwciBBcnJheVN0b3JhZ2VTaGFwZQogY29uc3QgU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlID0gY29uc3RleHByIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFw
ZQogY29uc3QgQ29weU9uV3JpdGUgICAgICAgICAgICAgID0gY29uc3RleHByIENvcHlPbldyaXRl
Citjb25zdCBBcnJheVdpdGhVbmRlY2lkZWQgICAgICAgPSBjb25zdGV4cHIgQXJyYXlXaXRoVW5k
ZWNpZGVkCiAKICMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJ1Y3R1cmVUeXBlID0gY29uc3Rl
eHByIFN0cnVjdHVyZVR5cGUKIGNvbnN0IFN0cmluZ1R5cGUgPSBjb25zdGV4cHIgU3RyaW5nVHlw
ZQogY29uc3QgU3ltYm9sVHlwZSA9IGNvbnN0ZXhwciBTeW1ib2xUeXBlCiBjb25zdCBPYmplY3RU
eXBlID0gY29uc3RleHByIE9iamVjdFR5cGUKQEAgLTIwNTEsNyArMjA1NCw2IEBAIHNsb3dQYXRo
T3AoY3JlYXRlX2FzeW5jX2dlbmVyYXRvcikKIHNsb3dQYXRoT3AoZGVmaW5lX2FjY2Vzc29yX3By
b3BlcnR5KQogc2xvd1BhdGhPcChkZWZpbmVfZGF0YV9wcm9wZXJ0eSkKIHNsb3dQYXRoT3AoZ2V0
X2J5X3ZhbF93aXRoX3RoaXMpCi1zbG93UGF0aE9wKGdldF9wcm9wZXJ0eV9lbnVtZXJhdG9yKQog
CiBpZiBub3QgSlNWQUxVRTY0CiAgICAgc2xvd1BhdGhPcChnZXRfcHJvdG90eXBlX29mKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQppbmRleCBiOGEwZjIwNTQzOTE0YmJkNmFiNWQ4MzIxMGFkMzc1NzkzMDMzNDk3
Li43ODUyNGNmZjE5Njk4ZGM4MDA1ODZiYTk0YWM0MjI3YjE4YzNmMzdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQpAQCAtMzA3OSw2ICszMDc5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9zZXRfcHJp
dmF0ZV9icmFuZCwgT3BTZXRQcml2YXRlQnJhbmQsIG1hY3JvIChzaXplLCBnZXQsIGQKICAgICBk
aXNwYXRjaCgpCiBlbmQpCiAKK3Nsb3dQYXRoT3AoZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpCiBz
bG93UGF0aE9wKGVudW1lcmF0b3JfbmV4dCkKIHNsb3dQYXRoT3AoZW51bWVyYXRvcl9nZXRfYnlf
dmFsKQogc2xvd1BhdGhPcChlbnVtZXJhdG9yX2luX2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYzdk
MWEyMDQ4MDkzMjhkYjA0MTM5NzVkNWI4Nzk2MjBhNTMxN2YwZC4uNTlmNzY0YzU3MzVmZTI3ZWQw
MGFkZjQ5MmU1ZDZiNjAyOWExODUwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTMwOTMsNiArMzA5MywzMCBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX25leHQsIE9wSXRlcmF0b3JOZXh0LCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAorbGxpbnRP
cFdpdGhSZXR1cm4ob3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IsIE9wR2V0UHJvcGVydHlFbnVt
ZXJhdG9yLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorICAgIGdldChtX2Jh
c2UsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQxLCB0MCwgLnNs
b3dQYXRoKQorCisgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbdDBdLCB0MQorICAgIGFuZGkgSW5k
ZXhpbmdUeXBlTWFzaywgdDEKKyAgICBiaWEgdDEsIEFycmF5V2l0aFVuZGVjaWRlZCwgLnNsb3dQ
YXRoCisKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0MiwgdDMpCisgICAg
bG9hZHAgU3RydWN0dXJlOjptX3ByZXZpb3VzT3JSYXJlRGF0YVt0MV0sIHQxCisgICAgYnRweiB0
MSwgLnNsb3dQYXRoCisgICAgYmJlcSBKU0NlbGw6Om1fdHlwZVt0MV0sIFN0cnVjdHVyZVR5cGUs
IC5zbG93UGF0aAorCisgICAgbG9hZHAgU3RydWN0dXJlUmFyZURhdGE6Om1fY2FjaGVkUHJvcGVy
dHlOYW1lRW51bWVyYXRvclt0MV0sIHQxCisgICAgYnRweiB0MSwgLnNsb3dQYXRoCisgICAgYnRp
eiBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Om1fZmxhZ3NbdDFdLCAoY29uc3RleHByIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6VmFsaWRhdGVkVmlhV2F0Y2hwb2ludCksIC5zbG93UGF0aAor
CisgICAgcmV0dXJuKHQxKQorCisuc2xvd1BhdGg6CisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCiBsbGlu
dE9wKG9wX2VudW1lcmF0b3JfbmV4dCwgT3BFbnVtZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gpCiAgICAgIyBOb3RlOiB0aGlzIHdpbGwgYWx3YXlzIGNhbGwgdGhlIHNsb3cg
cGF0aCBvbiBhdCBsZWFzdCB0aGUgZmlyc3QvbGFzdCBleGVjdXRpb24gb2YgRW51bWVyYXRvck5l
eHQgZm9yIGFueSBnaXZlbiBsb29wLgogICAgICMgVGhlIHVwc2lkZSB0aGlzIGlzIHRoYXQgd2Ug
ZG9uJ3QgaGF2ZSB0byByZWNvcmQgYW55IG1ldGFkYXRhIG9yIG1vZGUgaW5mb3JtYXRpb24gaGVy
ZSBhcyB0aGUgc2xvdyBwYXRoIHdpbGwgZG8gaXQgZm9yIHVzIHdoZW4gdHJhbnNpdGlvbmluZyBm
cm9tIEluaXRNb2RlL0luZGV4ZWRNb2RlIHRvIE93blN0cnVjdHVyZU1vZGUsIG9yIGZyb20gT3du
U3RydWN0dXJlTW9kZSB0byBHZW5lcmljTW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JyYW5kZWRTdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQnJhbmRlZFN0cnVjdHVyZS5jcHAKaW5kZXggZjI1NGQxMzE3ZjdjNjkwNzVm
ZjI0N2ZiZjc2ZjI3ZTM3ZTBiZDc3ZS4uMzIyMjg2ODc2MTE4NTMwODQ4NzU5MTgzNDhmZjhhYjhm
MGY2Y2UzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRl
ZFN0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnJhbmRl
ZFN0cnVjdHVyZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgU3RydWN0dXJlKiBCcmFuZGVkU3RydWN0
dXJlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHByZXZpb3VzLCBVbmlxdWVkU3RyaW5nSW0K
ICAgICBBU1NFUlQodm0uc3RydWN0dXJlU3RydWN0dXJlKTsKICAgICBCcmFuZGVkU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCcmFuZGVkU3RydWN0
dXJlPih2bS5oZWFwKSkgQnJhbmRlZFN0cnVjdHVyZSh2bSwgcHJldmlvdXMsIGJyYW5kVWlkLCBk
ZWZlcnJlZCk7CiAgICAgbmV3U3RydWN0dXJlLT5maW5pc2hDcmVhdGlvbih2bSwgcHJldmlvdXMp
OworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnR5cGUoKSA9PSBTdHJ1Y3R1cmVUeXBlKTsKICAg
ICByZXR1cm4gbmV3U3RydWN0dXJlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmNwcAppbmRleCAxNjEzYzY1M2VmMjhmMTgwYzBmODUzMmYyNGU2MDRmYjQ1ZjZkMGYx
Li41YThhMTRhM2NjNmFkMTllZDQwODI0YjgzMDJkYjkwYzRjNDc0YzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiB7CiAgICAgc3dp
dGNoICh0eXBlKSB7CiAgICAgQ0FTRShDZWxsVHlwZSkKKyAgICBDQVNFKFN0cnVjdHVyZVR5cGUp
CiAgICAgQ0FTRShTdHJpbmdUeXBlKQogICAgIENBU0UoU3ltYm9sVHlwZSkKICAgICBDQVNFKEhl
YXBCaWdJbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCBk
ZTY3MzAxYmMxNTc1MGExNDE1Mjc0Nzc0ODNkZTM3ZmVhMDE2NGFiLi42NWVhOTRlZjU2M2Y0YjNh
ZTIxOTE3NTFjNzkyZWM1MTBkNTc0MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaApAQCAtMjUsNiArMjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGVudW0gSlNUeXBlIDog
dWludDhfdCB7CiAgICAgLy8gVGhlIENlbGxUeXBlIHZhbHVlIG11c3QgY29tZSBiZWZvcmUgYW55
IEpTVHlwZSB0aGF0IGlzIGEgSlNDZWxsLgogICAgIENlbGxUeXBlLAorICAgIFN0cnVjdHVyZVR5
cGUsCiAgICAgU3RyaW5nVHlwZSwKICAgICBIZWFwQmlnSW50VHlwZSwKICAgICBMYXN0TWF5YmVG
YWxzeUNlbGxQcmltaXRpdmUgPSBIZWFwQmlnSW50VHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDQ5YWM3NDVkNjVjZmU0M2U0ZDdhMmE1MTQ4
OTJmNDg1ZGYwMGQ1N2UuLjUzMGYyOTZhNWQ1YThmMjA0ZjExZDFkZGIzMjVlMTU3YjZmYjE4NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjM2
LDcgKzIzNiw3IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvCiAKIGNvbnN0IENsYXNzSW5mbyBT
dHJ1Y3R1cmU6OnNfaW5mbyA9IHsgIlN0cnVjdHVyZSIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoU3RydWN0dXJlKSB9OwogCi1TdHJ1Y3R1cmU6OlN0cnVj
dHVyZShWTSYgdm0pCitTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIENyZWF0aW5nRWFybHlD
ZWxsVGFnKQogICAgIDogSlNDZWxsKENyZWF0aW5nRWFybHlDZWxsKQogICAgICwgbV9pbmxpbmVD
YXBhY2l0eSgwKQogICAgICwgbV9iaXRGaWVsZCgwKQpAQCAtMjYzLDcgKzI2Myw3IEBAIFN0cnVj
dHVyZTo6U3RydWN0dXJlKFZNJiB2bSkKICAgICBzZXRUcmFuc2l0aW9uT2Zmc2V0KHZtLCBpbnZh
bGlkT2Zmc2V0KTsKICAgICBzZXRNYXhPZmZzZXQodm0sIGludmFsaWRPZmZzZXQpOwogIAotICAg
IFR5cGVJbmZvIHR5cGVJbmZvID0gVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKTsK
KyAgICBUeXBlSW5mbyB0eXBlSW5mbyA9IFR5cGVJbmZvKFN0cnVjdHVyZVR5cGUsIFN0cnVjdHVy
ZUZsYWdzKTsKICAgICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2Iodm0uaGVhcC5zdHJ1Y3R1cmVJ
RFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSwgMCwgdHlwZUluZm8pOwogICAgIG1fb3V0T2ZMaW5l
VHlwZUZsYWdzID0gdHlwZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CiAKQEAgLTM0OSw2ICsz
NDksNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlKFBvbHlQcm90b1RhZywgVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgcmVzdWx0LT5zZXRN
YXhPZmZzZXQodm0sIG5ld01heE9mZnNldCk7CiAgICAgICAgIH0pOwogCisgICAgQVNTRVJUKHJl
c3VsdC0+dHlwZSgpID09IFN0cnVjdHVyZVR5cGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggOWYyN2NiYTAx
ZWQyNTYwZTQ1MjVkY2UyMGU5NGZiMDQyZGMxZWVjNi4uMjZiODc5Mzg1MGIzZjE4ZjFhZWVhMTVi
OGE4OWIxYTg3ZmMzMTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKQEAgLTc0Miw3ICs3NDIsNyBAQCBjbGFzcyBTdHJ1Y3R1cmUgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3Rv
dHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUsIHVu
c2lnbmVkIGlubGluZUNhcGFjaXR5KTsKLSAgICBTdHJ1Y3R1cmUoVk0mKTsKKyAgICBTdHJ1Y3R1
cmUoVk0mLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50RmlyZSogPSBudWxscHRyKTsKICAgICAKQEAgLTgzNiw5ICs4MzYsOSBAQCBjbGFzcyBTdHJ1
Y3R1cmUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHBpbihj
b25zdCBBYnN0cmFjdExvY2tlciYsIFZNJiwgUHJvcGVydHlUYWJsZSopOwogICAgIHZvaWQgcGlu
Rm9yQ2FjaGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYsIFZNJiwgUHJvcGVydHlUYWJsZSopOwog
ICAgIAotICAgIGJvb2wgaXNSYXJlRGF0YShKU0NlbGwqIGNlbGwpIGNvbnN0CisgICAgc3RhdGlj
IGJvb2wgaXNSYXJlRGF0YShKU0NlbGwqIGNlbGwpCiAgICAgewotICAgICAgICByZXR1cm4gY2Vs
bCAmJiBjZWxsLT5zdHJ1Y3R1cmVJRCgpICE9IHN0cnVjdHVyZUlEKCk7CisgICAgICAgIHJldHVy
biBjZWxsICYmIGNlbGwtPnR5cGUoKSAhPSBTdHJ1Y3R1cmVUeXBlOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIERldGFpbHNGdW5jPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IDNlY2Q4MzM5NTUwYmExZWE4ZGZlODRh
YmQ5NGE5YTQ3MjI5YWI5ZmIuLjUzNWYwZTE5YTRiYjQ5YmVlYzZhMGQxM2E0OWY2YmJiMGYzN2Nk
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgKQEAgLTYyLDEzICs2MiwxNCBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogCiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1
cmU+KHZtLmhlYXApKSBTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCB0eXBl
SW5mbywgY2xhc3NJbmZvLCBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBpbmxpbmVDYXBh
Y2l0eSk7CiAgICAgc3RydWN0dXJlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKHN0
cnVjdHVyZS0+dHlwZSgpID09IFN0cnVjdHVyZVR5cGUpOwogICAgIHJldHVybiBzdHJ1Y3R1cmU7
CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSkKIHsKICAgICBBU1NFUlQoIXZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7Ci0gICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmU+KHZtLmhl
YXApKSBTdHJ1Y3R1cmUodm0pOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPih2bS5oZWFwKSkgU3RydWN0dXJlKHZtLCBDcmVh
dGluZ0Vhcmx5Q2VsbCk7CiAgICAgc3RydWN0dXJlLT5maW5pc2hDcmVhdGlvbih2bSwgQ3JlYXRp
bmdFYXJseUNlbGwpOwogICAgIHJldHVybiBzdHJ1Y3R1cmU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAppbmRleCBmMDdkMmNiZmMz
NTVkZjM5Mzc4MjI3NTBkZGJjZGJmNzgyYWE2NzVmLi43N2MwMzNhNjlmZTU0YzBlYTgyNTI5OGJh
OTlmYTZlZDE5NzQwZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiBjbGFzcyBTdHJ1Y3R1cmU7CiBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKIGNsYXNzIENh
Y2hlZFNwZWNpYWxQcm9wZXJ0eUFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDsKQEAgLTExOSw2
ICsxMjAsNyBAQCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIHZvaWQgaW52YWxpZGF0ZVdhdGNocG9pbnRCYXNlZFZhbGlkYXRpb24oKTsKIAogcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVu
ZCBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZFNwZWNpYWxQcm9wZXJ0
eUFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDsKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkU3Bl
Y2lhbFByb3BlcnR5QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDAyZjE4OTdiMGYzOTE4NTYwYjUwNTMx
OWQ2ZTQ2MWJkYjVkNzEwZGQuLmYxYzZkZjg1NGM0MGY2Njk5NGI4YmVlNDdiODYyZmQxOWM2YjQy
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ4NSw2ICs0ODUsNyBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsIFdURjo6UnVuTG9vcCog
cnVuTG9vcCwgYm9vbCogc3VjY2VzcykKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpIHsKICAg
ICAgICAgc2VudGluZWxNYXBCdWNrZXQoKTsKICAgICAgICAgc2VudGluZWxTZXRCdWNrZXQoKTsK
KyAgICAgICAgZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCk7CiAgICAgfQogICAgIHsKICAg
ICAgICAgYXV0byogYmlnSW50ID0gSlNCaWdJbnQ6OnRyeUNyZWF0ZUZyb20oKnRoaXMsIDEpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBh
ZTA1MDQxOGI1MWY4ZTlhNzA3MTBkMGRhMTBhMDI2N2U5NzdhNzI1Li5mOWQzNjVmMDM4YzQ3NWNl
YjZlODNlOWI1ZmI4ZDBjYzk4YmE0MTgxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA5LTA5ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gT3B0aW1pemUg
b3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IgZnVydGhlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZm9yLWluLWNlbGwtb3RoZXIuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZm9ySW4pOgorICAgICAgICAq
IHN0cmVzcy9mb3ItaW4tbnVsbC11bmRlZmluZWQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoZm9ySW4pOgorCiAyMDIxLTA5LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgTWF0aC5oeXBvdCBjaGVja3MgZm9yIGluZmluaXRl
IHZhbHVlcyBwcmVtYXR1cmVseQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWNl
bGwtb3RoZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tY2VsbC1vdGhlci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNzlmZjdmNmIyYWE3OGNlNzVhNGZmYzI5MWYwNDhlZjhjM2UyNzA2Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLWluLWNlbGwtb3RoZXIuanMKQEAgLTAsMCArMSwy
MiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIGZvckluKG9iamVjdCkKK3sKKyAgICB2YXIgaXRlcmF0
aW9uID0gMDsKKyAgICBmb3IgKHZhciBpIGluIG9iamVjdCkKKyAgICAgICAgKytpdGVyYXRpb247
CisgICAgcmV0dXJuIGl0ZXJhdGlvbjsKK30KK25vSW5saW5lKGZvckluKTsKKwordmFyIG9iamVj
dCA9IHsgaTogNDIsIGkyOiA0MywgaTM6IDQ0IH07Cit2YXIgb2JqZWN0MiA9IHsgaTogNDIsIGky
OiA0MywgaTM6IDQ0LCBpNDo0NSB9OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgewor
ICAgIHNob3VsZEJlKGZvckluKG51bGwpLCAwKTsKKyAgICBzaG91bGRCZShmb3JJbihvYmplY3Qp
LCAzKTsKKyAgICBzaG91bGRCZShmb3JJbih1bmRlZmluZWQpLCAwKTsKKyAgICBzaG91bGRCZShm
b3JJbihvYmplY3QyKSwgNCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4t
bnVsbC11bmRlZmluZWQuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3ItaW4tbnVsbC11bmRlZmluZWQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTM1YjFmY2UxNjcwNmQ2ZDEyZWU0MzE1N2EyODE5MmE3ODk4NzIzNAot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1pbi1udWxsLXVuZGVmaW5lZC5q
cwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gZm9ySW4ob2JqZWN0KQorewor
ICAgIHZhciBpdGVyYXRpb24gPSAwOworICAgIGZvciAodmFyIGkgaW4gb2JqZWN0KQorICAgICAg
ICArK2l0ZXJhdGlvbjsKKyAgICByZXR1cm4gaXRlcmF0aW9uOworfQorbm9JbmxpbmUoZm9ySW4p
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgc2hvdWxkQmUoZm9ySW4o
bnVsbCksIDApOworICAgIHNob3VsZEJlKGZvckluKHVuZGVmaW5lZCksIDApOworfQo=
</data>
<flag name="review"
          id="460948"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>